2011-07-08 130 views
37

我想在我的ios應用程序中使用HelveticaNeue-UltraLight。我將字體文件作爲資源添加到我的項目中,並在plist文件中添加「應用程序提供的字體」鍵。文件名是HelveticaNeue.dfont,我已將它添加到關鍵數組中。自定義字體在ios不工作

當我檢查可用的字體我現在可以看到它... ...

NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"]; 

for(NSString *string in fonts){ 
    NSLog(@"%@", string); 
} 

1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold 
2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack 
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium 
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue 
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light 
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold 
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic 
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic 
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS! 
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic 
2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic 

但是,當我嘗試把它[UIFont fontWithName:@「HelveticaNeue-超輕」大小:12]我剛獲得HelveticaNeue-Light ..

我沒有收到任何錯誤或警告。 請幫忙!

回答

94

該文件不僅需要添加到項目中,還需要添加到目標中。

有時(和我的情況一樣),當在Xcode中拖放「.ttf」文件時,不會選中「添加到目標」。這意味着該文件實際上在您的項目中可見,但它並未嵌入到應用程序中。

,以確保它是:

  • 點擊項目名稱(左窗格)
  • 然後在目標(中間窗格)
  • 然後「構建階段」的權利(第三個選項卡窗格)
  • 然後「複製包資源」

您應該看到在列表中的字體文件。

1

嘗試用空間:

[UIFont fontWithName:@"Helvetica Neue UltraLight" size:12]; 

Certain fonts not showing up?

+0

我嘗試了幾個空白模式,沒有去...我也看到了鏈接..謝謝!它真的讓我困惑,HelveticaNeue-UltraLightItalic確實可行! –

+0

這是過時的,但我仍然在這裏,所以FYI正確的格式現在是HelveticaNeue-UltraLight,請參閱http://iosfonts.com/獲取完整列表。 –

1

我結束了從第三方購買的字體Helvetica Neue字體超輕,沒有任何問題補充它。

+0

小心從特定網站推薦購買。我可以說在這種情況下這不是廣告,但人們因爲付費解決方案回答自己的問題而陷入困境。 –

+0

感謝您的提示! –

3

儘管這可能不會幫助的OP,這可能是有用的人。

使用iOS 5,Helvetica Neue被自動包含;您不必將此自定義字體添加到捆綁包中。甚至可以直接從Interface Builder使用該字體系列,這非常方便。

2

試試這個也會對你有好處。

[compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]]; 
6

打開字體書應用程序。如果您自己安裝了字體,請轉至用戶,查找您需要的字體並在xcode項目中使用該字體的PostScript名稱。

即使對於同一系列的不同字體變體,它也應該可以工作。

7

捆綁添加字體文件後 上落財產點擊「字體的應用程序提供的」向下箭頭 和帶擴展輸入您的字體名稱

5

它是用相同的字體的不同變化工作(甚至在IOS 8)。我會發布我的錯誤,以防萬一有人有同樣的問題... 我正在使用字體的文件名,而不是字體名稱。 一個有用的解決方案是打印所有可用的字體並查找我正在使用的字體。 在斯威夫特是:

for fontFamilyNames in UIFont.familyNames() { 
     for fontName in UIFont.fontNamesForFamilyName(fontFamilyNames) { 
      print("FONTNAME:\(fontName)") 
     } 
} 

我發現這個有用的教程:Code with Chris

0

爲了使用iOS中自定義字體,只是通過拖放&下降到您的項目添加字體。在Info.plist中使用關鍵字「應用程序提供的字體」提到帶有擴展名的字體名稱數組。

for (NSString* family in [UIFont familyNames]) 

{ 

    DebugLog(@"FONT FAMILY: %@", family); 

    for (NSString *name in [UIFont fontNamesForFamilyName: family]) 
    { 
     DebugLog(@" %@", name); 
    } 
} 

控制檯打印:

宋體希伯來語 ArialHebrew粗體 ArialHebrew光強 ArialHebrew

宋體 宋體粗體 然後使用下面的代碼打印所有字體系列名稱Calibri

格魯吉亞 格魯吉亞BOLDITALIC 格魯吉亞粗體 格魯吉亞斜體 格魯吉亞

然後從控制檯,您將獲得實際的字體名稱(如上)。使用下面的代碼來創建字體 -

在覈心文本:

CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL); 

UIKit中:

UIFont *font = [UIFont fontWithName:fontName size:10]; 

注:此處的fontName = @ 「宋體粗體」 是不帶擴展名。

0

花費數小時後,我開始知道我們需要添加的字體的名稱不是字體的文件名,而是實際的字體名稱。我試圖包含字體文件bonveno.ttf。我已經在info.plist中包含了文件名和擴展名,並能夠看到列表中的字體。我的代碼像

self.label.font = [UIFont fontWithName:@"bonveno" size:30]; 

這是造成問題。然後我雙擊從Finder的字體文件來查看字體的預覽。那次我注意到預覽窗口中的字體名稱爲BonvenoCF。所以我在代碼中添加了這個名字,如

self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30]; 

像魅力一樣工作!在我的應用程序中不能生活這個可愛的字體。