2017-02-20 178 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