美文网首页
swift 如何为某个角设置圆角

swift 如何为某个角设置圆角

作者: UILable攻城狮 | 来源:发表于2023-08-01 14:54 被阅读0次

某个角设置为圆角

在 iOS 11 上,系统为 CALayer 提供了一个新属性 maskedCorners ,它可以指定设置哪些角为圆角,这个属性总共有四个值可供选择,也可以组合使用:

  • layerMinXMinYCorner:左上角
  • layerMaxXMinYCorner:右上角
  • layerMinXMaxYCorner:左下角
  • layerMaxXMaxYCorner:右下角

假如我们需要左上角和右下角为圆角,其他两个角为直角,只需要这样设置:

customView.layer.cornerRadius = 20
customView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]

效果如下

image.png

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

相关文章

网友评论

      本文标题:swift 如何为某个角设置圆角

      本文链接:https://www.haomeiwen.com/subject/fnmlpdtx.html