我创建了一个结构,让我的字体可以全局预先缓存:
struct Fonts {
static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)
}
...用法:
xy.font = Fonts.avenirRegular
它告诉我,我的常数是一个可选项。
可选类型'UIFont?'的值没有打开;你的意思是用'!'还是'?'?
为什么它是可选的?是否有可能在每个iOS设备上都没有AvenirNextCondensed-Regular
?非常感谢帮助。
答案 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)!
}