自定义字体仅在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/
简单来说:
- 请记住包含您的字体项目
- 设置字体的目标
- 检查你的字体是否包含在资源中
- 添加自定义字体到plist文件
- 在代码中检查你的字体的真实姓名
当我完成本文所述的所有操作时,我的字体只能在界面构build器中使用。 我也有第5步的问题 – 我的字体没有出现在控制台输出。
好的,现在是时候给我提示:
提示#1
使用otf字体格式,如果你有不同的,转换它(或问你的devise师;))你可以使用这个网站的: https : //onlinefontconverter.com/
提示#2
在上面的文章中,您可以find:
打开它并添加一个名为“由应用程序提供的字体”的新行,这将是一个数组,您需要添加所有要使用的字体的文件名。
请input“UIAppFonts”,而不是“应用程序提供的字体”。请记住,如果您有多个plist文件,请将其设置为全部。
马特做了一个孤立的问题很好的工作…我没有正确加载字体。
在我的情况下,问题出现在Info.plist中。
我使用其名称列出了Info.plist中的字体。 这是不正确的。 您应该使用其文件名在Info.plist中列出字体。