2017-02-20 157 views
0

的变色我有一个简单的圆角的矩形UIBezierPath圆角矩形 - 角

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中设置背景颜色以清除颜色,则圆角矩形将成为具有尖角的矩形。我尝试用矩形制作一个椭圆形,并用清晰的颜色填充它。这也没有奏效。 也许答案是微不足道的,但我绝对无能为力。

enter image description here

+0

没有其他的你需要指定一个backgroundColor。我也面临同样的问题如果我给superview查看清晰的颜色,那么superview背景颜色会变为黑色 – Koushik

+0

将灰色设置为背景颜色到视图 – Koushik

+0

在背景中有一个TableView。设置背景颜色灰色不是解决方案。 – Wed

回答

1

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

它容易得多,如果你使用@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() 
} 

}

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

+0

我已经做到了。我知道现在的问题是什么。当我将背景颜色更改为clearColor时,IBInspectable var fillColor和IBInspectable var cornerRadius的默认值将被忽略。我如何将默认值提交给IB?在IB中设置EVERYTHING(fillColor,cornerRadius和BackgroundColor)之后,它可以像预期的那样工作。谢谢! – Wed