Je viens de mettre à jour mon iPod touch vers iOS 7.0.3 et "HelveticaNeue-Italic" semble avoir disparu. Lorsque je fais une requête au téléphone avec :
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
J'obtiens les fontNames suivants (13) :
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Lorsque j'exécute la même requête dans le simulateur, j'obtiens (14) :
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Quelqu'un d'autre a vu ça ?
---- Nouvelles informations ----
Je suis retourné à la vidéo de la WWDC 2013 "Using Font with Text Kit" et la partie intéressante commence à 12:22. Le présentateur parle de "MetaFonts" dans OS X comme exemple. Ce qu'il dit, c'est que la police sous des appels comme :
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
ne sont pas garantis de renvoyer la même police sous-jacente d'une version à l'autre ou même d'une utilisation à l'autre. Son exemple était Lucinda Grande. Il ne semblait pas dire que l'utilisation de "HelveticaNeue-Italic" pouvait disparaître d'une version à l'autre.
J'ai donc construit une expérience dans iOS 7. J'ai créé ma police avec le code suivant :
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
J'ai obtenu un UIFont valide pour fontWithDescriptor et lorsque j'ai interrogé la police pour le fontName avec :
[fontWithDescriptor fontName]
Je suis rentré...
HelveticaNeue-Italic
Allez comprendre.
Donc une réponse possible à la 7.0.3 semble être le code ci-dessus.
---- Tweak supplémentaire ----
Bien que la solution ci-dessus ait fonctionné, je ne pense pas qu'elle soit formellement correcte. J'ai opté pour la solution suivante
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Cela semble faire toutes les bonnes choses. J'ai essayé l'approche précédente avec une autre famille de polices et il semble qu'il y ait eu confusion entre le fontName et le fontFamily. J'espère que cela vous aidera !