首页 > 解决方案 > 圆角按钮被切断的问题

问题描述

我有一个自定义按钮类,用于获得圆角。该类适用于一些硬编码的长度/宽度,但不适用于其他。我根本无法使用动态大小的按钮让它工作。从图片中可以看出,按钮以各种方式被切断。知道我做错了什么吗?

class CustomButton: UIButton{
    
     
       override init(frame: CGRect) {
           super.init(frame: frame)
           setupButton()
       }
       
       
       required init?(coder aDecoder: NSCoder) {
           super.init(coder: aDecoder)
           setupButton()
       }
       
       
       func setupButton() {
           setTitleColor(.white, for: .normal)
           layer.cornerRadius   = frame.size.height/2
           layer.masksToBounds = true
       }
       
}

在此处输入图像描述

谢谢你的帮助。

标签: iosswift

解决方案


发生这种情况是因为您在使用初始帧创建按钮之后设置了角。按钮的框架在布局过程中会发生变化,但它的角不会重绘。只需将 setupButton 调用添加到 layoutSubviews:

override func layoutSubviews() {
    super.layoutSubviews()
    setupButton()
}

此外,由于可能的性能问题,我建议您使用 UIBezierPath 方法而不是cornerRadius。


推荐阅读