Reputation: 5071
In swift i'm writing an extension (like Obj-C category) that maintains in code class methods of "house colors." I'm wondering if there is a way to make this color extension accessible to Interface builder using IBInspectable or something else as opposed to attaching colors specifically to UIView subclasses as i've seen in a lot of IBInspector sample usage.
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() }
}
Upvotes: 11
Views: 2262
Reputation: 5071
The best solution I have found to this problem is to build an asset catalog of house colors, which can be used by Interface Builder.
https://help.apple.com/xcode/mac/current/#/dev10510b1f7
Upvotes: 2
Reputation: 66
As far as I know, you can't programatically define colors that will then show up in Interface Builder, but you can extend UIColor
for custom colors to use in your code:
extension UIColor {
static func myCustomColor() -> UIColor {
return UIColor(red: 23/255.0, green: 175/255.0, blue: 72/255.0, alpha: 1.0)
}
}
And to reference the custom color:
myView.backgroundColor = UIColor.myCustomColor()
This doesn't completely solve your issue, but it could potentially be better to set colors programatically than through IB. It would allow you to adjust a value one time in code to change a color throughout the app rather than having to adjust it multiple times for each UI element through Interface Builder.
Upvotes: 3