swift中CACornerMask和UIRectCorner的区别

Saj*_*jad 1 ios swift

当我尝试在视图中设置角半径时,我看到我有两个选择。

  • CA角遮罩
  • UI矩形角

swift 中这两个结构有什么区别:

CACornerMaskUIRectCorner

小智 6

CACornerMask 是在 iOS 11 中添加的。它归结为用例。

我们通常将角半径设置为CALayer,因此使用CACornerMask非常容易。

let view = UIView()
view.layer.cornerRadius = 5
view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]
Run Code Online (Sandbox Code Playgroud)

与使用 UIRectCorner 相反:

var cornerMask = UIRectCorner()
cornerMask.insert(.bottomLeft)
cornerMask.insert(.bottomRight)

let path = UIBezierPath(roundedRect: self.bounds,
                        byRoundingCorners: cornerMask,
                        cornerRadii: CGSize(width: 5, height: 5))
let mask = CAShapeLayer()
mask.path = path.cgPath

let view = UIView()
view.layer.mask = mask
Run Code Online (Sandbox Code Playgroud)

当您已经做了一些 UIBezierPath 操作时,第二个示例会变得很方便。

对于大多数简单的用例,您可能会使用 CACornerMask。