Interface Builder 的全局调色板

Global Color Palette for Interface Builder

在 swift 中,我正在编写一个扩展(如 Obj-C 类别),它在 "house colors." 的代码 class 方法中维护 我想知道是否有办法使用 IBInspectable 或其他东西使界面构建器可以访问此颜色扩展,而不是像我在很多 IBInspector 示例用法中看到的那样专门将颜色附加到 UIView subclasses。

extension UIColor {
    // house blue
    @IBInspectable var houseBlue: UIColor { return UIColor(red:(51/255), green:(205/255), blue:(255/255), alpha:(1)) }

    // house gray
    @IBInspectable var houseGray: UIColor { return UIColor(white:0.4, alpha: 1) }

    // house white
    @IBInspectable var houseWhite: UIColor { return UIColor.whiteColor() }
}

据我所知,您无法以编程方式定义随后将显示在 Interface Builder 中的颜色,但您可以扩展 UIColor 以在代码中使用自定义颜色:

extension UIColor {

   static func myCustomColor() -> UIColor {
     return UIColor(red: 23/255.0, green: 175/255.0, blue: 72/255.0, alpha: 1.0)
   }

}

并参考自定义颜色:

myView.backgroundColor = UIColor.myCustomColor()

这并不能完全解决您的问题,但以编程方式设置颜色可能比通过 IB 更好。它允许您在代码中调整一次值以更改整个应用程序的颜色,而不必通过 Interface Builder 为每个 UI 元素多次调整它。

我发现这个问题的最佳解决方案是建立一个房屋颜色的资产目录,供 Interface Builder 使用。

https://help.apple.com/xcode/mac/current/#/dev10510b1f7