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 使用。
在 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 使用。