2017-10-16 6 views
1

나는 "보기"의 ​​배경 색상을 변경하려면이 기능을 실제로 을 어떻게 작동하는지 이해가 안 나는draw (_ 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

Vey 감사합니다 @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