UIAppearance和Swift中的圆角边框

3

我是一个新手,对于使用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!
        }
    }
}

我将所有内容都连接到了一个包含圆形按钮的ViewController中,使用Storyboard进行设计。没有编译或构建错误。

然而,在运行时,我遇到了以下错误:

“线程1:EXC_BAD_ACCESS”错误出现在:

CircleButton.appearance.roundBorderRadius = 9

你有什么建议吗?


你可以尝试一种非UIAppearance的样式处理方式,直接使用嵌套对象的属性进行操作。其中一个具有可组合和可重用样式的微型框架是StyleSheet - werediver
1个回答

5

去掉@nonobjc并添加dynamic,然后将类型从CGFloat?更改为CGFloat,在setter中删除newValue后面的,像这样:

public class CircleButton: UIButton {

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

        set {
            layer.cornerRadius = newValue
        }
    }
}

有关为什么它崩溃的任何解释呢?从我的猜测来看,UIAppearance 只适用于 ObjC 对象,这意味着您无法使用 Swift 对象连接到 UIAppearance? - itMaxence

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接