Ich habe gerade meinen iPod touch auf iOS 7.0.3 aktualisiert und "HelveticaNeue-Italic" scheint verschwunden zu sein. Wenn ich am Telefon abfrage mit:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Ich erhalte die folgenden fontNames (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
Wenn ich dieselbe Abfrage im Simulator ausführe, erhalte ich (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
Hat das noch jemand gesehen?
---- Neue Informationen ----
Ich ging zurück zum WWDC 2013-Video "Verwenden von Schrift mit Text-Kit" und der interessante Teil beginnt um 12:22 Uhr. Der Moderator spricht als Beispiel über "MetaFonts" in OS X. Was er sagt ist, dass die Schriftart unter Aufrufen wie folgt lautet:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
Es wird nicht garantiert, dass dieselbe zugrunde liegende Schriftart über Versionen oder sogar unterschiedliche Verwendungszwecke hinweg zurückgegeben wird. Sein Beispiel war Lucinda Grande. Er schien nicht zu sagen, dass die Verwendung von "HelveticaNeue-Italic" von Version zu Version gehen könnte.
Also habe ich ein Experiment in iOS 7 erstellt. Ich habe meine Schriftart mit dem folgenden Code erstellt:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Ich habe ein gültiges UIFont für fontWithDescriptor zurückbekommen und als ich die Schriftart für den fontName abfragte mit:
[fontWithDescriptor fontName]
Ich bin zurückgekommen...
HelveticaNeue-Italic
Stelle dir das vor???
Eine mögliche Antwort auf 7.0.3 scheint also der obige Code zu sein.
---- Weitere Optimierung ----
Obwohl die oben beschriebene Lösung funktioniert hat, denke ich nicht, dass sie formal korrekt ist. Ich habe auf die folgende Lösung umgestellt
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Dies scheint die richtigen Dinge zu tun. Ich habe den vorherigen Ansatz mit einer anderen Schriftfamilie ausprobiert und es schien mit dem fontName und der fontFamily verwechselt zu werden. Hoffe das hilft!