2015-07-21 71 views
10

在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() } 
} 
+1

這將是太棒了!但這是不可能的,我的知識。但是,您可以在界面生成器中添加自定義調色板,但我認爲它們僅適用於該界面。 –

+0

你想只在故事板中使用它,但不是像'UIView.backgroundColor = x'這樣的實際代碼中使用它嗎? –

+0

兩者,真的。 @CodyWeaver – achi

回答

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元素多次調整該值。