如何用 UIBezierPath 绘制圆角矩形?

tom*_*dey 5 ios uibezierpath swift

我正在尝试用圆角矩形掩盖视图UIBezierPath。我希望蒙版看起来与我刚刚设置时完全相同layer.cornerRadius

let frame = CGRect(x: 0, y: 0, width: 80, height: 80)
let cornerRadius = 30
Run Code Online (Sandbox Code Playgroud)

使用cornerRadius

let view = UIView(frame: frame)
view.layer.cornerRadius = cornerRadius
Run Code Online (Sandbox Code Playgroud)

使用UIBezierPath面膜

let view = UIView(frame: frame)
let maskingShape = CAShapeLayer()
maskingShape.path = UIBezierPath(roundedRect: frame, cornerRadius: cornerRadius).cgPath
view.layer.mask = maskingShape
Run Code Online (Sandbox Code Playgroud)

生成的圆角矩形完全不同。标准cornerRadius按预期工作,而贝塞尔曲线路径仅捕捉到特定半径的完整圆。

在此输入图像描述

显然,这是 iOS 7 的预期行为。

那么如何绘制带有贝塞尔曲线路径的标准圆角矩形呢?

我找到了这个类别,但这一定是个笑话吧?难道就没有更简单的办法吗?:(

相关问题