2016-05-31 31 views
2

因此,我对整个UIAppearance方法的处理方式相当陌生,并且很快就做到了。华友世界没有那么多的文件。Swift中的UIA外观和圆形边框

我试图通过UIAppearance沿东西线设置我的边界半径:

CircleButton.appearance.roundBorderRadius = 9 

我CircleButton类实现:

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

我在故事板钩一切都交给一个包含CircleButton的ViewController。没有编译或构建错误。

然而,在运行时我得到一个:

CircleButton.appearance.roundBorderRadius = 9 

任何意见:

“主题1:EXC_BAD_ACCESS” 上的错误?

+0

你可以尝试建立基于非'UIAppearance'的方法来样式直接使用嵌套对象的属性。一个这样的具有可组合和可重用样式的微框架是[StyleSheet](https://github.com/werediver/StyleSheet)。 – werediver

回答

3

删除@nonobjc并添加dynamic,然后更改从CGFloat?类型CGFloat和二传手删除!newValue后,像这样:

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

谢谢 - 这工作干净 – ephilip