Щойно оновив свій iPod touch до iOS 7.0.3, а "HelveticaNeue-Italic", схоже, зник. Коли я запитую по телефону за допомогою:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Я отримую такі шрифтові імена (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
Коли я виконую той самий запит, що працює в тренажері, я отримую (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
Хтось ще бачив це?
---- Нова інформація ----
Я повернувся до відеозапису WWDC 2013 "Використання шрифту з текстовим набором" і цікава частина починається о 12:22. Ведучий розповідає про приклад "MetaFonts" в OS X. Він каже, що шрифт під дзвінками:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
не гарантовано повертати один і той же базовий шрифт у різних версіях або навіть різних цілях. Його прикладом була Лусінда Гранде. Він, схоже, не каже, що використання "HelveticaNeue-Italic" може перейти від версії до версії.
Тому я сконструював експеримент в iOS 7. Я створив свій шрифт із наступним кодом:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Я отримав дійсний UIFont назад для fontWithDescriptor, і коли я запитав шрифт для fontName за допомогою:
[fontWithDescriptor fontName]
Я повернувся ...
HelveticaNeue-Italic
Піди розберися???
Отже, можлива відповідь на 7.0.3 здається кодом вище.
---- Подальше налаштування ----
Хоча рішення працювало вище, я не вважаю це формально правильним. Я перейшов до наступного рішення
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Здається, це робиться все правильно. Я спробував попередній підхід з іншим сімейством шрифтів, і, здавалося, плутати з fontName та fontFamily. Сподіваюся, це допомагає!