常用的设置圆角方式
最常用的设置圆角方式是设置 layer 上的 cornerRadius 属性:
customView.layer.cornerRadius = 20
如果这个 View 上有子视图可能超过其边界时,需要设置 clipsToBounds 为 true,或者 masksToBounds 属性为 true。

这种设置圆角的方式会把矩形的四个角都设置成圆角,但有的时候,我们只需要把某个角设置为圆角,其他角保持直角,这时候这个属性就实现不了了。
某个角设置为圆角
在 iOS 11 上,系统为 CALayer 提供了一个新属性 maskedCorners ,它可以指定设置哪些角为圆角,这个属性总共有四个值可供选择,也可以组合使用:
-
layerMinXMinYCorner:左上角 -
layerMaxXMinYCorner:右上角 -
layerMinXMaxYCorner:左下角 -
layerMaxXMaxYCorner:右下角
假如我们需要左上角和右下角为圆角,其他两个角为直角,只需要这样设置:
customView.layer.cornerRadius = 20
customView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]

iOS 11 以下版本兼容
如果你的 App 支持 iOS 11 以下的版本,就不能使用 maskedCorners 了,另一个变通的办法是使用 layer 上的 mask 属性,相当于在 UIView 上加了一层圆角遮罩。
首先利用贝塞尔曲线 UIBezierPath 画出一个左上角和右下角带有圆角的矩形路径,然后创建一个新的 layer CAShapeLayer,并把其 path 属性设置为贝塞尔曲线的 path,最后把 customView 的 mask 设置为这个新的 layer。
let corners: UIRectCorner = [.topLeft, .bottomRight]
let radii = CGSize(width: 20, height: 20)
let path = UIBezierPath(roundedRect: customView.bounds, byRoundingCorners: corners, cornerRadii: radii)
let mask = CAShapeLayer()
mask.path = path.cgPath
customView.layer.mask = mask
点击下方公众号卡片,关注我,每天分享一个关于 iOS 的新知识
本文同步自微信公众号 “iOS新知”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!