自定义字体仅在Interface Builder中设置时才可用

我已经添加了一个自定义字体到我的项目。 它被包含在目标中,并被添加到plist中。 当我尝试以编程方式使用它时,它不起作用,并且当我打印出可用字体列表时,它不显示。 但是,它在Interface Builder中显示为一个选项,如果我在IB中将标签的文本设置为该字体,则它会正常工作,并在打印出可用字体列表时显示出来。 这是XCode 6.4和iOS 8.0

当它通过IB工作时,它将以这样的字体名称打印出来:Special Elite SpecialElite-Regular

我以如下方式以编程方式调用字体:[UIFont fontWithName:@“SpecialElite-Regular”size:fontSize];

使用内置字体进行此操作时不存在任何问题。

当我尝试以编程方式使用它时,它不起作用,并且当我打印出可用字体的列表时,它不显示

这certificate你实际上没有把它正确地包含在目标和Info.plist中

似乎在IB工作的原因是,这种字体也出现在您的计算机上 。 但事实上,如果你要在你的设备上运行这个应用程序,你会发现即使在IB中设置字体也不起作用。

你的字体是特殊的精英。 正如你所看到的,我在这里运行的应用程序中可见:

在这里输入图像说明

以下是我使用的代码:

  let lab = UILabel() lab.text = "This is a test" lab.font = UIFont(name:"SpecialElite-Regular", size:18) lab.sizeToFit() lab.frame.origin = CGPointMake(100,100) self.view.addSubview(lab) 

所以你看,可以在代码中引用这个字体 – 如果它正确加载 。 你显然没有正确加载它。 这不在您的应用程序包中,或者不在复制版本阶段,或者您的Info.plist中未正确列出。

(当然,总是有可能调用[UIFont fontWithName:size:] ,对于名字或大小来说,这个值不好。

好的,话题很老,但我想在这里放两毛钱。

首先,阅读这篇文章http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/

简单来说:

  1. 请记住包含您的字体项目
  2. 设置字体的目标
  3. 检查你的字体是否包含在资源中
  4. 添加自定义字体到plist文件
  5. 在代码中检查你的字体的真实姓名

当我完成本文所述的所有操作时,我的字体只能在界面构build器中使用。 我也有第5步的问题 – 我的字体没有出现在控制台输出。

好的,现在是时候给我提示:

提示#1

使用otf字体格式,如果你有不同的,转换它(或问你的devise师;))你可以使用这个网站的: https : //onlinefontconverter.com/

提示#2

在上面的文章中,您可以find:

打开它并添加一个名为“由应用程序提供的字体”的新行,这将是一个数组,您需要添加所有要使用的字体的文件名。

请input“UIAppFonts”,而不是“应用程序提供的字体”。请记住,如果您有多个plist文件,请将其设置为全部。

马特做了一个孤立的问题很好的工作…我没有正确加载字体。

在我的情况下,问题出现在Info.plist中。

我使用其名称列出了Info.plist中的字体。 这是不正确的。 您应该使用其文件名在Info.plist中列出字体