2017-10-16 77 views
1

我不明白這個功能實際上是如何工作的 如果我想改變的「查看」背景色我會去存取權限的它如何繪製(_ rect:CGRect)實際工作?

let containerView = CustomView(frame: CGRect(x: 0, y: 0, width: 400, height: 400)) 
containerView.backgroundColor = UIColor.blue 

的查看和更改值的背景屬性,但是當我想要在draw()函數中改變矩形的顏色 我只是調用UIColor.green.set()函數。爲什麼這個功能改變矩形

class CustomView: UIView { 
    override func draw(_ rect: CGRect) { 
     super.draw(rect) 


     let rect = UIBezierPath(roundedRect: CGRect(x: 150, y: 150, width: 100, height: 100), cornerRadius: 5.0) 
     UIColor.green.set() // <- Why this line change rect color ? 
     rect.fill() 
    } 
} 
+0

嗨,@Moritz 對不起,我試圖解決它。 – user8637708

+0

現在好多了。請繼續改進。祝你好運! :) – Moritz

+0

維伊感謝謝謝@Moritz – user8637708

回答

0

一個UIView的顏色有.backgroundColor屬性。當UIKit想要顯示視圖時,它會檢查.backgroundColor屬性並用該顏色「填充」背景。

UIColor.green.set()rect.fill()變化視圖的背景顏色。

當您覆蓋draw(_ rect: CGRect)函數時,UIKit已經完成了對.backgroundColor屬性的處理,並根據需要填充了背景。 您的代碼然後在背景上「繪製填充的矩形」。

+0

謝謝@DonMag 我有一些小問題 「UIColor.green.set()」只是一個函數。我不明白爲什麼這個功能可以改變Rect Color? – user8637708

+0

它不改變Rect Color ...它「設置」fill()函數使用的顏色。 – DonMag

+0

哦好吧我現在明白了謝謝@DonMag – user8637708