2011-01-07 155 views
4

我使用this方法在我的iPhone应用程序中嵌入自定义字体。UILabel自定义字体显示*错误*自定义字体

嵌入工作原理:当我运行下面的代码时,列出了字体。 (目前,我嵌入OTF格式无数临的所有家庭成员)

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

当我尝试设置标签MyriadPro或MyriadPro粗体的字体,如预期该工作而已。但是,当我将字体设置为MyriadPro-BoldCond时,标签仍然以MyriadPro-Bold而不是浓缩版本设置。 (字体名称正确,我查了。)我的代码:

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

这是怎么回事?

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

回答

2

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

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

+0

似乎很有趣。我会尽力回报。 – winsmith 2011-01-09 12:09:17

+2

我又回来了。使用核心文本确实有效。然而,与使用NSLabel相比,这是相当多的工作,特别是如果您已经像我一样使用Interface Builder来布局您的应用程序。 – winsmith 2011-01-10 06:29:44