2011-01-07 153 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