11

在swift中,我正在编写一个扩展(如Obj-C类别),它在代码类方法中维护“房屋颜色”。我想知道是否有一种方法可以使用 IBInspectable 或其他方式使界面生成器可以访问此颜色扩展,而不是像我在很多 IBInspector 示例使用中看到的那样专门将颜色附加到 UIView 子类。

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() }
}
4

2 回答 2

3

据我所知,您无法以编程方式定义将显示在 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 元素多次调整它。

于 2016-07-18T03:30:11.547 回答
2

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

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

于 2018-05-07T18:56:38.830 回答