按钮的圆角的UIBezierPath无法正常工作

时间:2016-11-08 09:12:16

标签: ios swift autolayout

我为UIButton创建了一个类并覆盖了awakeFromNib。 下一个(绿色按钮)使用这个类。

我在“下一步”按钮(绿色)旁边有一些空格。 iPad中的这个空间会更多:

next button

override func awakeFromNib() {
    super.awakeFromNib()

    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.TopLeft, .BottomLeft], cornerRadii: CGSizeMake(5, 5))

    let maskLayer = CAShapeLayer()
    maskLayer.path = path.CGPath
    self.layer.mask = maskLayer

    self.layer.borderColor = MyColor.nextButtonBorder.CGColor
}

1 个答案:

答案 0 :(得分:0)

你应该把这段代码放在

layoutSubviews()

方法。不要忘记删除以前添加的maskLayer。

完整示例:

override func layoutSubviews() {
    super.layoutSubviews()
    self.layer.mask = nil
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.TopLeft, .BottomLeft], cornerRadii: CGSizeMake(5, 5))

    let maskLayer = CAShapeLayer()
    maskLayer.path = path.CGPath
    self.layer.mask = maskLayer

    self.layer.borderColor = MyColor.nextButtonBorder.CGColor
}