我必须向我的应用添加自定义字体。我在项目中添加了字体并列出了信息列表。
enum Proxima: String {
case regular = "Regular"
func font(size: CGFloat) -> UIFont {
return UIFont(name: "Proxima-\(rawValue)", size: size)!
}
}
致命错误:调用时解开包装可选值时意外发现nil
self.headTitle.font = UIFont.Proxima.regular.font(size: 30)
更新
我添加了目标,还检查了副本捆绑资源是否全部正确,但仍然出现相同的错误。
答案 0 :(得分:1)
删除常规字体,因为iOS使用默认字体作为常规,请尝试修改代码并在此之后正常工作。
例如:
@IBOutlet weak var label1: UILabel!
enum OpenSans: String {
case regular = ""
case semiBold = "-Semibold"
func font(size: CGFloat) -> UIFont {
return UIFont(name: "OpenSans\(rawValue)", size: size)!
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib..
label1.font = OpenSans.regular.font(size: 30.0)
label1.font = OpenSans.semiBold.font(size: 30.0)
}
如果仍然有问题,请参考此演示项目
希望它会有所帮助。
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试这些
在项目中添加自定义文件,并在构建阶段在复制捆绑资源中进行验证
使用此功能,您可以检查项目中可用的字体。在appDelegate中添加此函数,然后从didFinsihLaunching调用它。
func printFonts() {
let fontFamilyNames = UIFont.familyNames
for familyName in fontFamilyNames {
print("------------------------------")
print("Font Family Name = [\(familyName)]")
let names = UIFont.fontNames(forFamilyName: familyName)
print("Font Names = [\(names)]")
}
}
如果自定义字体在打印字体列表中可用,则可以使用。
答案 3 :(得分:0)
运行以下代码,检查项目中可用的字体。
for fontFamilyName in UIFont.familyNames{
for fontName in UIFont.fontNames(forFamilyName: fontFamilyName){
print("Family: \(fontFamilyName) Font: \(fontName)")
}
}
在控制台中查看输出,所有可用字体都打印在此处,检查提供的字体的实际字体名称。
并为UIFont(name: "FontName", size: 15)
使用该字体名称
答案 4 :(得分:0)
确保将文件添加到目标
此外,不要忘记将它们添加到Info.plist
答案 5 :(得分:0)
Xcode 11.1,iOS 13.1
我做对了所有事情,但字体列表中缺少一种自定义字体(通过UIFont.fontNames(forFamilyName: fontFamilyName)
)。
然后我将Info.plist(应用程序提供的字体)中缺少的字体重新排序到前面,并且可以正常工作。
也许这可以帮助某人。
答案 6 :(得分:0)
如果您按照此 Apple guide 操作仍然有问题,则最确定的问题是字体名称。要检查正确的字体名称,请在 Mac 上安装该字体,然后打开它。然后单击所需的字体,然后单击“i”图标以获取更多信息:
确保这是您在两者中使用的名称:
PS:如果您尝试使用许可字体,则无法使用上述方法。我尝试使用 Bariol(废话!),但它无法识别它们。我假设有一种方法可以集成您的许可证,但我没有花时间去做,我只是改用了 Google 字体。