Swift 中的 UIAppearance 和圆角边框

UIAppearance and Rounded Borders in Swift

所以我对整个 UIAppearance 做事的方法以及使用 swift 做事还很陌生。万岁没有大量的文件。

我正在尝试通过 UIAppearance 设置我的边框半径,其中的内容如下:

CircleButton.appearance.roundBorderRadius = 9

我的 CircleButton class 实现:

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

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

但是,在运行时我得到:

"Thread 1: EXC_BAD_ACCESS" 错误:

CircleButton.appearance.roundBorderRadius = 9

有什么建议吗?

删除@nonobjc并添加dynamic,然后将类型从CGFloat?更改为CGFloat并删除newValue之后的! setter,像这样:

public class CircleButton: UIButton {

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

        set {
            layer.cornerRadius = newValue
        }
    }
}