2011-07-08 63 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]; 

像魅力一样工作!在我的应用程序中不能生活这个可爱的字体。