Je viens de mettre à niveau mon iPod touch vers iOS 7.0.3 et "HelveticaNeue-Italic" semble avoir disparu. Lorsque j'interroge 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 je fais la même requête en cours d'exécution 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?
---- Nouvelle information ----
Je suis retourné à la vidéo de la WWDC 2013 "Using Font with Text Kit" et la partie intéressante commence à 12h22. Le présentateur parle de "MetaFonts" dans OS X à titre d'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 entre les versions ou même les utilisations différentes. Son exemple était Lucinda Grande. Il ne semblait pas dire que l'utilisation de "HelveticaNeue-Italic" pouvait passer d'une version à l'autre.
J'ai donc construit une expérience sous 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 récupéré un UIFont valide pour fontWithDescriptor et quand j'ai interrogé la police pour le fontName avec:
[fontWithDescriptor fontName]
Je suis rentré...
HelveticaNeue-Italic
Allez comprendre???
Donc, une réponse possible à 7.0.3 semble être le code ci-dessus.
---- Autres modifications ----
Bien que la solution ait fonctionné ci-dessus, je ne pense pas qu'elle soit formellement correcte. Je suis passé à 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 cela semblait être confondu avec le fontName et la fontFamily. J'espère que cela t'aides!