iPod touchをiOS 7.0.3にアップグレードしたところ、「HelveticaNeue-Italic」が表示されなくなったようです。私が電話でクエリすると:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
次の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
シミュレーターで同じクエリを実行すると、次のようになります(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から始まります。プレゼンターは、例としてOS Xの「MetaFonts」について話します。彼が言うことは、呼び出し中のフォントは次のようになるということです:
+ (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];
fontWithDescriptorに対して有効なUIFontを取得しましたが、fontNameのフォントを次のように照会したところ、
[fontWithDescriptor fontName]
私は戻りました...
HelveticaNeue-Italic
フィギュア行く???
したがって、7.3.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と混同されているようです。お役に立てれば!