2016-12-03 21 views
0

我想基於我獲得的互聯網信息設置不同的IBInspectable項目。例如,我有用於綠色,紅色和橙色圓圈的IBInspectables。如果請求顯示綠色,我想將isGreen設置爲Yes,其他設置爲no。其他兩個也一樣。 你可以看到IBInspectables here。我知道我可以用我放在那裏的代碼來做到這一點,但是有沒有辦法以編程方式切換它們?以編程方式設置IBInspectable

+0

你可以看到設置@IBInspactable物業:https://iosdevcenters.blogspot.com/2017/07/how-to-use-ibinspectable-in-swift-30.html –

回答

2

任何IBInspectable,僅僅是一個編碼在IB中可見的屬性。所以,如果你有這樣的:

@IBInspectable var isGreen:Bool? { 
    didSet { 
     // code to color circle? 
    } 
} 

你可以這樣做:

self.isGreen = true 
+0

所以,在我的ViewController中,我應該添加@IBInspectable isGreen,並在viewWillAppear我寫什麼? –

+0

我應該在哪裏確定要調用哪些,以及如何觸發它們? –

+0

我誤解了你的問題。你可能會重構一些東西,因爲IBInspectable屬性已經知道了UIColor類型。 [鏈接] http://nshipster.com/ibinspectable-ibdesignable/展示了一個很好的例子。 – dfd

0

你聽起來困惑。術語IBInspectable描述了其上具有@IBInspectable標籤的視圖對象的屬性。這告訴Interface Builder,您希望能夠從Interface Builder內部更改該屬性。

除了可以從Interface Builder進行編輯之外,IBInspectable屬性與其他屬性沒有區別。

如果你有一個類CircleView,具有財產直徑:

class FooView: UIView { 
    @IBInspectable var diameter: CGFloat { 
    didSet { 
     //Code to do something with a change to the diameter property 
    } 
} 

而且您的視圖控制器具有FooView對象在它的出口,那麼您可以在代碼只是改變你的自定義屬性的值像任何其他財產:

class MyViewController: UIViewController { 

    @IBOulet weak var fooView: FooView! 

    @IBAction func buttonTapped(sender: UIButton) { 
    fooView.diameter += 5 
    } 
}