2015-07-21 26 views
10

In swift ich schreibe eine Erweiterung (wie Obj-C-Kategorie), die in Code-Klasse-Methoden der "Hausfarben." Ich frage mich, ob es eine Möglichkeit gibt, diese Farbausdehnung dem Interface-Builder mit IBInspectable oder etwas anderem zugänglich zu machen, anstatt Farben spezifisch an UIView-Subklassen anzuhängen, wie ich es in vielen IBInspector-Beispielen gesehen habe. Globale Farbpalette für Interface Builder

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

Das wäre toll! Aber meines Wissens ist es nicht möglich. Sie können jedoch eine benutzerdefinierte Farbpalette innerhalb des Interface Builders hinzufügen, aber ich denke, dass sie nur dort verwendet werden können. –

+0

Versuchen Sie, es nur in Storyboards zu verwenden, aber nicht in Ihrem eigentlichen Code wie 'UIView.backgroundColor = x'? –

+0

Beide wirklich. @ CodyWeaver – achi

Antwort

3

Soweit ich weiß, kann man nicht programmatisch Farben definieren, die dann im Interface Builder oben zeigen, aber Sie können UIColor verlängern für kundenspezifische Farben in Ihrem Code zu verwenden:

extension UIColor { 

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

} 

und die benutzerdefinierte Farbe zu verweisen:

myView.backgroundColor = UIColor.myCustomColor() 

Diese nicht vollständig Ihr Problem lösen, aber es könnte möglicherweise besser Farben einstellen programmatisch als durch IB. Sie können einen Wert einmal im Code anpassen, um eine Farbe in der gesamten App zu ändern, anstatt sie für jedes Oberflächenelement über den Interface Builder mehrmals anpassen zu müssen.