【发布时间】:2018-11-23 21:42:48
【问题描述】:
在我正在开发的应用程序中,我们使用named colors 来管理我们的配色方案,我们在代码中使用如下:
extension UIColor {
static let primaryColor = UIColor(named: "primaryColor")!
}
这在大多数地方都可以正常工作,但是当我们在 Interface Builder 中加载的自定义视图中的某处将其用作默认值时会中断,因为无法在 Interface Builder 构建中加载包含颜色的资产目录。
我们现在考虑了一些解决方法来避免强制展开,但实际上我们希望资产目录像其他任何地方一样简单地加载到 Interface Builder 构建中。
有什么办法吗?
编辑:
为了澄清,通过 Interface Builder 中的 UI 设置颜色时很好。当我们在这样的代码中设置它时会发生崩溃:
class CustomView: UIView {
init() {
self.backgroundColor = .primaryColor
}
}
编辑 2:
我提交了一个雷达:rdar://41244137
【问题讨论】:
-
不太确定是什么导致了您的情况崩溃,我尝试创建颜色集并使用情节提要中的颜色集,并且加载正常。即使您将图像分配给情节提要中的各种 UI 组件,图像也会从资产库本身加载。如果资产库没有加载,它也应该在那里崩溃,不是吗?
-
请分享崩溃日志
-
我不是在询问有关崩溃的问题。当
UIColor(named: "primaryColor")被强制解包时会发生这种情况,它仅在Interface Builder 中返回nil。我的问题是如何让它在 Interface Builder 环境中返回非零颜色。 -
我面临着完全相同的问题。一切正常,但是我所有以编程方式从 xcassets 引用命名颜色的自定义 IBDesignable xib 都没有建立在 IBInspector 上。看起来像 xcode 中的错误。
标签: ios interface-builder asset-catalog