自定义字体显示在IB中但不在设备上显示

我正在尝试使用Open Sans系列中的字体。 我将字体添加到我的Xcode项目中,我检查它们是否已添加到我的应用程序资源包中,并将字体添加到我的Info.plist文件中。

当我在Interface Builder中编辑XIB时,我可以在字体下拉菜单中选择自定义时在UILabel上使用Open Sans字体。 字体在Interface Builder中的预览中正确呈现,但是当我在设备上启动应用程序时,字体不会应用于标签。

我尝试以编程方式设置字体,但这也不起作用。 而且我没有收到任何警告或错误。

我忘记了什么能够使用自定义字体?

运行iOS7的iPad Air和运行iOS8的iPhone 6上的行为相同。

转到目标 – >构建阶段 – >复制捆绑资源,在那里检查字体文件是否存在,如果没有按加号按钮并手动添加它。 有时字体文件不会自动添加到捆绑资源。

希望这可以帮助。

只需确保捆绑包中的所有字体都可用,尝试打印所有字体并检查您是否使用了正确的名称。 您可以使用app delegate的didFinishLaunchingWithOptions方法中的以下代码轻松完成此操作:

 for (NSString *familyName in [UIFont familyNames]) { NSLog(@"Family Name : %@", familyName); for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { NSLog(@"\tFont Name : %@", fontName); } } 

或者在Swift中:

 if let familyNames = UIFont.familyNames() as? [String] { for familyName in familyNames { println("Family : " + familyName) if let fontNames = UIFont.fontNamesForFamilyName(familyName) as? [String] { for fontName in fontNames { println("\tFont : " + fontName) } } } } 

swift代码不是最有效的,但应该用于检查bundle中是否存在字体。

确保您已在Info.plist中添加了字体。 有一个名为“由应用程序提供的字体”的条目,它必须包含您要使用的所有字体文件。

对我有用的是当我添加字体以检查我的应用名称前面的“添加到目标”时。

在此处查看图片示例:

在此处输入图像描述

您是否正确地将字体添加到info.plist中,以及字体拼写如何包含其文件扩展名? 例如,OpenSans.ttf与opensans.ttf或opensans不同。 要100%确定文件名,请右键单击您的字体文件,单击“获取信息”,然后选中“全名”说明。 要以编程方式添加字体,请关闭文件扩展名。 例如,

 myLabel.font = [UIFont fontWithName:@"OpenSans" size:32]; 

我只是有同样的问题…仍然有点…我想在同一标签中混合字体,这不起作用…解决方法是我试图改变标签的IB属性检查器尝试将文本下拉列表从属性更改为普通…字体在设备中发生了变化…所以我认为这是Xcode中的一个错误。

如果您使用的是webfont,请下载.ttf文件并将其放入您的项目中。 如果需要复制项目上的复选标记

接下来在info plist上添加它

  UIAppFonts  Your fontname.ttf Bakersfield Bold.ttf  

现在看一下字体系列名称。 您也可以在字体文件中找到。 从您下载的地方,您也将到达那里。 就像我添加的字体ttf文件名是: Bakersfield Bold.ttf这个字体名称是: Bakersfield-Bold这就是它的快乐编码。