2016-12-03 6 views
0

Ich möchte verschiedene IBInspectable Elemente basierend auf Internet-Informationen, die ich bekomme, einstellen. Zum Beispiel habe ich IBInspectables für grüne, rote und orange Kreise. Wenn die Anfrage grün anzeigt, möchte ich isGreen auf Ja und andere auf Nein setzen. Gleiches gilt für die anderen beiden. Sie können IBInspectables here sehen. Ich weiß, dass ich es mit dem Code, den ich dort eingefügt habe, machen kann, aber gibt es eine Möglichkeit, sie programmatisch zu wechseln?IBInspectable programmgesteuert einstellen

+0

Sie sehen @IBInspactable Eigentum zu setzen: https://iosdevcenters.blogspot.com/2017/07/how-to-use-ibinspectable-in-swift-30.html –

Antwort

2

Alle IBInspectable, ist nur eine Eigenschaft codiert in IB gesehen werden. Also, wenn Sie dies:

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

Sie können dies tun:

self.isGreen = true 
+0

Also, in meinem ViewController, sollte ich @ IBInspectable isGreen hinzufügen und in viewWillAppear was schreibe ich? –

+0

Wo soll ich bestimmen, welche von ihnen anzurufen ist und wie man sie auslöst? –

+0

Ich habe deine Frage falsch gelesen. Sie könnten die Dinge wahrscheinlich umgestalten, da IBInspectable-Eigenschaften bereits über den UIColor-Typ verfügen. [link] http://shipster.com/ibinspectable-ibdesignable/ zeigt ein gutes Beispiel dafür. – dfd

0

Sie verwirrt klingen. Der Begriff IBInspectable beschreibt eine Eigenschaft eines Ansichtsobjekts, auf dem sich das Tag @IBInspectable befindet. Dadurch wird dem Interface Builder mitgeteilt, dass Sie diese Eigenschaft in Interface Builder ändern können.

Abgesehen von der Möglichkeit, vom Interface Builder aus bearbeitet zu werden, unterscheidet sich eine IBInspectable-Eigenschaft nicht von anderen Eigenschaften.

Wenn Sie eine Klasse Circle, mit einer Eigenschaft Durchmesser:

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

Und Ihre View-Controller ein FooView Objekt in es mit einem Auslass hat, dann können Sie den Wert der benutzerdefinierten Eigenschaft im Code ändern Sie einfach wie jede andere Eigenschaft:

class MyViewController: UIViewController { 

    @IBOulet weak var fooView: FooView! 

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