为什么字体是可选的?

时间:2016-11-07 08:46:52

标签: ios swift uifont

我创建了一个结构,让我的字体可以全局预先缓存:

struct Fonts {
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)
}

...用法:

xy.font = Fonts.avenirRegular

它告诉我,我的常数是一个可选项。

  

可选类型'UIFont?'的值没有打开;你的意思是用'!'还是'?'?

为什么它是可选的?是否有可能在每个iOS设备上都没有AvenirNextCondensed-Regular?非常感谢帮助。

3 个答案:

答案 0 :(得分:5)

这里的“可选”意味着问题是字体可能不存在(即使我们知道它确实存在)并且你必须认识它,通过使它成为可选的你告诉编译器我知道字体不是它的一部分你的图书馆,但我相信它在那里。

答案 1 :(得分:3)

您用于UIFont的初始值设定项是返回可选的UIFont?对象,即您获得包装可选项的建议的原因。

init?(name fontName: String, size fontSize: CGFloat)

查看UIFont的{​​{3}}了解详情。

答案 2 :(得分:0)

只需使用force unwrap来阻止这种情况:

struct Fonts {
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)!
}