UILabel自定义字体显示*错误*自定义字体

我使用这种方法在我的iPhone应用程序中embedded自定义字体。

embedded工作:当我运行下面的代码,字体被列出。 (目前,我正在embeddedMyriad Pro的所有家庭成员OTF格式)

for( NSString *familyName in [UIFont familyNames] ){ for( NSString *fntName in [UIFont fontNamesForFamilyName:familyName] ){ NSLog(@"%@", fntName); }} 

当我尝试将标签的字体设置为MyriadPro或MyriadPro-Bold时,就像预期的那样工作。 但是,当我将字体设置为MyriadPro-BoldCond时,标签仍然在MyriadPro-Bold而不是浓缩版本中设置。 (字体名称是正确的,我检查。)我的代码:

 [recommendationLabel setFont:[UIFont fontWithName:@"MyriadPro-BoldCond" size:140]]; recommendationLabel.adjustsFontSizeToFitWidth = YES; 

这是怎么回事?

编辑:除了下面的Ingve的解决scheme,我发现 – 至less对于Myriad Pro – 只要我从plist中删除未使用的字体,就会显示正确的字体变体。 在这种情况下,我需要删除MyriadPro-SemiBold。 Mindboggling。

UIFont限于每种字体系列的两种版本。 但是,您可以通过在编辑器中打开附加的n-2字体并更改系列名称来解决此问题。

在这里回答我自己的问题: UIFont fontWithName:限于每个家庭加载2个变体

也许这是UIFont的限制? 你有没有尝试过使用核心文本?

根据iOS核心文本字体 ,“核心文本不能让你访问更多的字体,但它提供了更多的字体变化的支持。举一个例子:当你使用UIFont时,Helvetica Neue有4个变体,而它有11个变体当使用核心文本“。