2016-05-31 24 views
2

Also ich bin ziemlich neu in der ganzen UIAppearance Ansatz zu tun, und tun es mit swift. Hurra für nicht eine Tonne Dokumentation da draußen.UIAppearance und abgerundete Grenzen in Swift

Ich versuche, meine Grenzradius durch UIAppearance mit etwas entlang der Linien von setzen:

CircleButton.appearance.roundBorderRadius = 9 

Meine CircleButton Klasse Umsetzung:

public class CircleButton : UIButton{ 
    @nonobjc var roundBorderRadius: CGFloat? { 
     get { return self.layer.cornerRadius } 
     set { 
      self.layer.cornerRadius = newValue! 
     } 
    } 
} 

Und ich alles Haken in Storyboard ein ViewController mit einem CircleButton. Keine Kompilierungs- oder Build-Fehler.

jedoch zur Laufzeit erhalte ich ein:

"Thema 1: EXC_BAD_ACCESS" Fehler auf:

CircleButton.appearance.roundBorderRadius = 9 

Jede Beratung?

+0

können Sie versuchen, einen nicht-'UIAppearance' basierten Ansatz Stylen, um direkt mit den Eigenschaften verschachtelter Objekte zu arbeiten. Ein solches Mikro-Framework mit zusammensetzbaren und wiederverwendbaren Stilen ist [StyleSheet] (https://github.com/werediver/StyleSheet). – werediver

Antwort

3

@nonobjc entfernen und dynamic hinzufügen, dann die Art CGFloat?-CGFloat ändern und die ! nach newValue in dem Setter entfernen, etwa so:

public class CircleButton : UIButton { 
    dynamic var roundBorderRadius: CGFloat { 
     get { return self.layer.cornerRadius } 
     set { 
      self.layer.cornerRadius = newValue 
     } 
    } 
} 
+1

danke - das hat sauber funktioniert – ephilip