我在项目中添加了自定义字体。 它包含在目标中,并添加到plist中。 当我尝试以编程方式使用它时它不起作用,并且当我打印出可用字体列表时它不会显示。 但是,它确实显示为Interface Builder中的一个选项,如果我在IB中将标签的文本设置为该字体,它将正常工作并在我打印出可用字体列表时显示。 这是XCode 6.4和iOS 8.0
当它通过IB工作时,它会以字体名称打印出来,如下所示: 特别精英 SpecialElite正规
我以编程方式调用字体: [UIFont fontWithName:@“SpecialElite-Regular”size:fontSize];
使用内置字体执行此操作时没有任何问题。
答案 0 :(得分:2)
当我尝试以编程方式使用它时它不起作用,并且当我打印出可用字体列表时它不显示
这证明您实际上已将不正确地包含在目标和 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:]
。)
答案 1 :(得分:1)
好的,主题很老但我想在这里投入两分钱。
首先,请阅读这篇文章http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/
简而言之:
当我执行本文所述的所有操作时,我的字体仅适用于界面构建器。我也遇到了第5步的问题 - 我的字体没有显示在控制台输出中。
好的,现在是时候向我提示:
提示#1
使用otf字体格式,如果你有不同,转换它(或询问你的设计师;)) 您可以使用此网站:https://onlinefontconverter.com/
提示#2
在上面的文章中,您可以找到:
打开它并添加一个名为“由应用程序提供的字体”的新行 将是一个数组,您需要添加字体的所有文件名 你想用。
而不是“应用程序提供的字体”输入“UIAppFonts” 请记住,如果您有多个plist文件,请为所有文件设置。
答案 2 :(得分:0)
Matt在隔离问题方面做得很好......我没有正确加载字体。
就我而言,问题出在Info.plist中。
我使用其名称列出了Info.plist中的字体。这是不正确的。您应该使用文件名列出Info.plist中的字体。
答案 3 :(得分:0)
我知道这已经过时了,但我遇到了同样的问题。只有在界面构建器中选择了该字体时,才会显示该字体。当我搜索UIAppFonts
时,它没有列出主要的Info.plist(我们已经使用自定义字体)由于某种原因。所以我最终将字体添加到本地化(?)plist文件,导致此问题。我要做的是转到项目设置>目标>信息选项卡并在那里添加字体文件名。
答案 4 :(得分:0)
问题是你没有在代码中给出字体的ProperName,为了获取字体名称,请运行此代码。
for family: String in UIFont.familyNames
{
print("\(family)")
for names: String in UIFont.fontNames(forFamilyName: family)
{
print("== \(names)")
}
}
它将打印所有字体,搜索字体并给出正确的名称。
let attributedText = NSMutableAttributedString(string: "We
Apologize! \n This feature is only available for \n Go 4.0
Subscriptions", attributes: [NSAttributedStringKey.font :
UIFont(name: "SpecialElite-Regular", size: 22)!])
答案 5 :(得分:0)
正如其他人所提到的,以下文章对于诊断问题非常有用。 http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/
在向Xcode项目中添加自定义字体时,还应添加单个字体,而不是所有字体的存储目录。如果添加该目录,则字体将在Interface Builder中可见,而在运行的应用程序中不可见。