2016-04-05 1 views
1

Ich würde gerne mehr Details wissen, wie man Textstile in UILabel implementiert. Ich möchte String in IBInspectable Feld in Storyboard eingeben, erhalten Sie diesen Wert und suchen Sie nach diesem in Style-Datei (Schalter Fall).UILerweiterung, Benutzerdefinierte Laufzeitattribute

Ich habe versucht, diese auf diese Weise zu tun:

  1. Set "Benutzerdefinierte Runtime-Attribut".

    Key Path als Stil,

    Typ als

    String,

    Wert als "Hallo"

    ich gelesen habe, dass ich diese Eigenschaft auch in UILabel Klasse deklarieren sollte so:

    extension UILabel{ 
        var style: String? { 
         get(){ 
          return self.style // it always fails 
         } 
         set(newValue){ 
          objc_setAssociatedObject(self, "styleNew", newValue, 
          objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) 
          //instead of self.style = newValue 
         } 
        } 
    

    }

ich es in viewDidAppear Methode als Outlet Eigenschaft bin Aufruf:

`print("Style", self.infoLabel.valueForKey("styleNew"))` 

und auch

`print("Style", self.infoLabel.styleNew)` 

Wenn ich versuche, Wert zu bekommen es funktioniert nicht. Ich bekomme "bad_exc_access" Fehler, ich habe versucht, es zu reparieren, aber ich verstehe dieses Verhalten nicht und auf apple.developer ist nichts klar. Ich habe nur Tutorials, Probleme mit cornerRadius, borderColor und Mitarbeiter gefunden. Ich habe versucht, Rückkehr return self.styleNew durch objc_getAssociatedObject(self, "styleNew") zu ersetzen, aber es hilft auch nicht.

Antwort

0

Dies ist eine berechnete Eigenschaft, und Sie können sich nicht selbst im Getter zurückgeben.

Wenn Sie versuchen, die Bezeichnung zu stylen, indem Sie die Stil-Zeichenfolge festlegen, empfehle ich, dass Sie eine Registrierung von Stilen beibehalten, und wenn das Stil-Attribut festgelegt wird, wenden Sie einfach den Stil auf die UILabel. Ich habe versucht, etwas ähnliches mit Erfolg zu implementieren, so dass Sie einen Blick here werfen können.

+0

Ihr Code war sehr hilfreich für mich, alles funktioniert für mich gut, aber was ist mit bekommen {return "etwas"} so wie kann ich richtig Wert erhalten, ohne sich selbst dorthin zurückzukehren? Ist es möglich? Was ist mit der Einstellung dieses Wertes? Eigentlich, was machst du da? Ruf einfach eine andere Methode an, die den Stil auswählt. Es ist ein merkwürdiges Verhalten für mich, dass ich Getter & Setter nicht für sich selbst festlegen kann. – rudald

Verwandte Themen