UIBezierPath roundedRect - 改变角的颜色

UIBezierPath roundedRect - change color of corners

我有一个简单的圆角矩形

override func draw(_ rect: CGRect) {
    let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: cornerSize, height: cornerSize))
    fillColor.setFill()
    path.fill()
    //fillColor is set to UIColor.black
    //cornerSize is set to 20
}

但是边角是白色的。如果我在 UIBuilder 中将背景颜色设置为清除颜色,则圆角矩形会变成带有尖角的矩形。我试着用矩形创建一个椭圆,并用清晰的颜色填充它。这也没有用。 也许答案是微不足道的,但我绝对一无所知。

您的代码可以正常工作。如果当视图背景颜色清晰时它绘制纯黑色,那么这可能意味着您在贝塞尔视图后面有一个相同大小的黑色视图。您可以通过将贝塞尔曲线的填充颜色更改为黑色以外的颜色来对此进行测试。

如果使用@IBDesignable 和@IBInspectable 关键字,调试起来会容易得多:

@IBDesignable class BezierView: UIView {

@IBInspectable var fillColor = UIColor.black

@IBInspectable var cornerRadius = 20.0

override func draw(_ rect: CGRect) {
    let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
    fillColor.setFill()
    path.fill()
}

}

然后它会在故事板中绘制视图,您可以在视图检查器中编辑填充颜色和角半径。