命名颜色在 Interface Builder 构建中崩溃

Named Colors crash in Interface Builder builds

在我正在开发的应用程序中,我们使用 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

当我使用 Bundle(for: AppDelegate.self) 而不是默认包 (Bundle.main) 时,命名颜色在 Interface Builder 中工作正常:

UIColor(named: "primaryColor", in: Bundle(for: AppDelegate.self), compatibleWith: nil)