Właśnie zaktualizowałem iPoda touch do iOS 7.0.3 i wydaje się, że „HelveticaNeue-Italic” zniknął. Kiedy pytam telefonicznie z:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Otrzymuję następujące 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
Kiedy robię to samo zapytanie działające w symulatorze, otrzymuję (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
Czy ktoś jeszcze to widział?
---- Nowa informacja ----
Wróciłem do wideo WWDC 2013 „Using Font with Text Kit” i interesująca część zaczyna się o 12:22. Prezenter mówi o „MetaFonts” w systemie OS X jako przykład. Mówi, że czcionka pod nazwami wygląda tak:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
nie gwarantuje się zwrócenia tej samej podstawowej czcionki w różnych wersjach, a nawet w różnych zastosowaniach. Jego przykładem była Lucinda Grande. Nie wydawał się mówić, że używanie „HelveticaNeue-Italic” może odejść od wersji do wersji.
Skonstruowałem więc eksperyment w iOS 7. Utworzyłem swoją czcionkę za pomocą następującego kodu:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Otrzymałem poprawny UIFont z powrotem dla fontWithDescriptor i kiedy zapytałem o czcionkę dla fontName za pomocą:
[fontWithDescriptor fontName]
Wróciłem...
HelveticaNeue-Italic
Domyśl???
Zatem możliwą odpowiedzią na 7.0.3 wydaje się być powyższy kod.
---- Dalsze poprawki ----
Chociaż rozwiązanie zadziałało powyżej, nie sądzę, aby było poprawne formalnie. Przerzuciłem się na następujące rozwiązanie
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
To wydaje się robić wszystkie właściwe rzeczy. Wypróbowałem poprzednie podejście z inną rodziną czcionek i wydawało się, że pomyliłem się z fontName i fontFamily. Mam nadzieję że to pomoże!