在我正在开发的应用程序中,我们使用命名颜色来管理我们的颜色方案,我们在代码中这样使用:
extension UIColor {
static let primaryColor = UIColor(named: "primaryColor")!
}
这在大多数情况下都可以正常工作,但是当我们将其用作自定义视图中某个地方的默认值时,在Interface Builder中加载该视图时会出现问题,因为包含颜色的资源目录无法在Interface Builder构建中加载。
我们现在考虑了一些解决方法来避免强制展开,但实际上我们希望像其他地方一样,在Interface Builder构建中简单地加载资源目录。
有没有什么办法可以做到这一点?
编辑:
澄清一下,当通过UI在Interface Builder中设置颜色时,这些颜色没有问题。 当我们像这样在代码中设置颜色时,就会出现崩溃:
class CustomView: UIView {
init() {
self.backgroundColor = .primaryColor
}
}
编辑2:
我已提交一个反馈:rdar://41244137
UIColor(named: "primaryColor")
时,它会返回nil
,但仅在Interface Builder中发生。我的问题是如何在Interface Builder环境中获取非空颜色。 - Xavier Lowmiller