接口生成器的全局颜色板

11

我在Swift中编写了一个扩展(类似于Obj-C的分类),用于在代码中维护“房屋颜色”的类方法。我想知道是否有一种方法可以使此颜色扩展可通过IBInspectable或其他方式访问Interface Builder,而不是像我在许多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() }
}

1
这将是很棒的!但据我所知,这是不可能的。但是你可以在Interface Builder中添加自定义颜色板,但我认为它们只能在那里使用。 - Finn Larsen
你是想仅在Storyboard中使用它,而不是在实际代码中使用,例如UIView.backgroundColor = x吗? - Cody Weaver
都可以,真的。@CodyWeaver - esreli
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元素多次进行调整。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接