UiButton角半径在UiButton CustomClass中使用的iPhone 5s中无法正常工作

时间:2019-05-03 06:00:39

标签: ios swift uibutton cornerradius

我为UIButton创建了一个自定义类,但在小屏幕设备中,例如iPhone 5s cornerRadius无法正常工作

Button looks Like This

您必须更加仔细地观察UiButton的{​​{1}}并没有完美地舍入

cornerRadius

4 个答案:

答案 0 :(得分:5)

EXEC(@Sql) 中设置Col1 Col2 Col3 Val1 Val2 Val3 Value1 Value2 Value1 Val A val B Val A Value A Value B Value C 太早了。请改用cornerRadius

awakeFromNib

答案 1 :(得分:0)

尝试

override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.bounds.height * 0.50    
}

因此,当您将自定义UIButton添加到子视图时,它将知道它的边界,而您只需要将转角半径指定为边界高度的一半即可。

答案 2 :(得分:0)

为此最好使用IBDesignable

@IBDesignable
class RoundedButton: UIButton {

    @IBInspectable var cornerRadius: CGFloat = 3.0 {
        didSet {
            self.layer.cornerRadius = cornerRadius
        }
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        self.setupView()
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        self.setupView()
    }

    func setupView() {
        self.layer.masksToBounds = false
        self.layer.cornerRadius = cornerRadius
    }
}

答案 3 :(得分:0)

我在这里偶然发现了这个问题,发现我在Swift 5中最有效的方法是在awakeFromNib内的Disptatch.main.async内设置layoutSubviews的拐角半径每一次小的变化或动作都要求关闭。这可能适用于某些用例。在上面的示例中,我还没有尝试过。

我的代码如下:

setNeedsLayout