我有一个视图,我想设置多个圆角。这是一个正常的平方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是四舍五入的,任何线索为什么?
答案 0 :(得分:2)
UIRectCorner
参数是一个符合optionSet协议的结构,它允许您传递集合的多个成员。每次使用不同的roundCorners
掩码调用该方法时,它都会覆盖以前的布局。
如果您想为视图设置多个圆角,则需要执行此操作:
myView.roundCorners([.bottomLeft, .bottomRight], radius: 20)
答案 1 :(得分:0)
正如Rashwan L所说,UIRectCorner采用了一系列选项。
当你真正调用掩码覆盖的方法时发生了什么。
同样在设置掩码后的方法中
self.layer.maskToBounds = true
在修改自我呼叫之前:
self.layoutIfNeeded()
它可以准确地绘制您的视图。