2009-08-20 4 views
4

drawRect:(CGRect)rect이 호출 될 때 UIView 하위 클래스가 있습니다. 이 (64, 63) 또는 (63, 64) 중 하나입니다. self.frame.size은 (64, 64)입니다.drawRect의 rect! = self.frame 때 조건

이 하위 클래스의 인스턴스가 여러 개 있습니다. 대부분이 drawRect 매개 변수의 예상 크기 (64, 64)를 갖습니다.

일부 하위 클래스가 drawRect 경계를 수정했지만 다른 하위 항목을 수정할 수없는 조건은 무엇입니까?

추가 맛있는 가벼운 음식 :

  • self.opaque 더
  • self.transform이 다양하지 않습니다이다; 나는 90도 단위로 UIView의 회전을 사용하지만, 뷰를 회전하는 것은 dirtyRect (drawRect

답변

12

의 drawRect에 전달하는 구형 시스템이 그릴을 요청하고있는 RECT되는 subesquent 통화에 rect.size 변경되지 않습니다)를보기의 좌표계에 표시합니다.

self.bounds 일 수도 있고 다른 rect 일 수도 있습니다.

일반적으로 드로잉이 매우 복잡한 경우를 제외하고 일반적으로 매개 변수를 무시하고 self.bounds에서 직접 그려야합니다. 전달 된 dirtyRect 매개 변수에주의를 기울이는 것은 앱을 프로파일 링하고 핫 스폿 인 것으로 판단 할 때까지 무시해야하는 최적화입니다.