斯威夫特的UIAppearance和Rounded Border

时间:2016-05-31 15:43:33

标签: ios swift exc-bad-access uiappearance

因此,我对整个UIAppearance处理方法相当陌生,并且使用swift进行操作。华友世纪没有那么多文件。

我试图通过UIAppearance设置我的边界半径:

CircleButton.appearance.roundBorderRadius = 9

我的CircleButton类实现:

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

我将Storyboard中的所有内容挂钩到包含CircleButton的ViewController。没有编译或构建错误。

然而,在运行时我得到了:

"线程1:EXC_BAD_ACCESS"错误:

CircleButton.appearance.roundBorderRadius = 9

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

移除@nonobjc并添加dynamic,然后将类型从CGFloat?更改为CGFloat,并移除设置者中!之后的newValue ,像这样:

public class CircleButton: UIButton {

    dynamic var roundBorderRadius: CGFloat {
        get { 
            return layer.cornerRadius
        }

        set {
            layer.cornerRadius = newValue
        }
    }
}