draw(_ rect:CGRect)实际上如何工作?

时间:2017-10-16 14:26:13

标签: ios swift cocoa-touch uiview uicolor

我不明白这个功能是如何运作的 如果我想改变" View"的背景​​颜色。我将访问View的background属性并更改它的值

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()
    }
}

1 个答案:

答案 0 :(得分:0)

UIView具有.backgroundColor属性。当UIKit想要显示视图时,它会检查.backgroundColor属性和&#34;填充&#34;那种颜色的背景。

UIColor.green.set()rect.fill() 更改 视图的背景颜色。

当您覆盖draw(_ rect: CGRect)函数时,UIKit已经完成了.backgroundColor属性的处理,并根据需要填充了背景。 您的 代码然后&#34;绘制一个填充的矩形&#34;在背景上。