刚刚将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
不能保证在不同版本甚至不同用途下都返回相同的基础字体。他的例子是露辛达·格兰德(Lucinda Grande)。他似乎并不是说使用“ 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.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混淆了。希望这可以帮助!