视图上有多个圆角

时间:2017-05-01 06:15:27

标签: ios swift layout

我有一个视图,我想设置多个圆角。这是一个正常的平方UIView

我正在调用此函数,这是一个扩展名:

func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
    let mask = CAShapeLayer()
    mask.path = path.cgPath
    self.layer.mask = mask
}

以下内容:

myView.roundCorners(.bottomLeft, radius: 20)
myView.roundCorners(.bottomRight, radius: 20)

但只有bottomRight是四舍五入的,任何线索为什么?

2 个答案:

答案 0 :(得分:2)

UIRectCorner参数是一个符合optionSet协议的结构,它允许您传递集合的多个成员。每次使用不同的roundCorners掩码调用该方法时,它都会覆盖以前的布局。

如果您想为视图设置多个圆角,则需要执行此操作:

myView.roundCorners([.bottomLeft, .bottomRight], radius: 20)

答案 1 :(得分:0)

正如Rashwan L所说,UIRectCorner采用了一系列选项。 当你真正调用掩码覆盖的方法时发生了什么。 同样在设置掩码后的方法中 self.layer.maskToBounds = true 在修改自我呼叫之前:  self.layoutIfNeeded() 它可以准确地绘制您的视图。