2011-07-03 4 views
1

서브 뷰가있는 NSView가 있습니다. 상위 뷰를 다시 그리지 않고 하위 뷰 (drawRect 호출)를 다시 그릴 수 있어야합니다. 그게 가능하니?NSView - 부모 뷰를 다시 그려 넣지 않고 서브 뷰를 다시 그리는 방법

하위보기에서 setNeedsDisplay를 실행하면 부모보기의 drawRect도 호출됩니다.

+0

NSResponder의 답변 외에도 다음과 같이 말하고 싶습니다. "다시 그리기 작업을 수행 할 때 부모보기가 수행하는 작업은 귀하의 비즈니스가 아니어야합니다." 이것이 코코아와의 계약 계약입니다. 상위 뷰가 자신의 클래스 중 하나 인 경우 관련 드로잉 코드를 게시하고 최적화 제안을 요청하십시오. –

+0

상위보기와 하위보기 모두 내보기입니다. 나는 그들의 drawRect 메서드를 구현합니다. 대부분의 경우 부모는 동일하게 유지되며 하위보기 만 변경됩니다. 그 이유를 들어, 하위 뷰의 drawRect 메서드를 –

+1

이라고 부르고 싶습니다. 요점은 하위 뷰에 superview에게 수행 할 작업이 없다는 것입니다. superview는 자체 자료를 처리하고 시스템이 필요하다고 말할 때 그려야합니다. 서브 뷰가 참으로 불투명 할 수 있다면 피하는 한 가지 방법은 NSResponder의 조언을 따르는 것입니다. 그러나 그들 사이에 투명도 레이어가 있다면, 물론 슈퍼 뷰는 적어도 그 지역을 다시 그려야 할 것입니다. –

답변

4

불필요한 그림을 줄이기 위해 할 수있는 일은 -isOpaque을 오버라이드하고 YES를 반환합니다.

물론 서브 뷰가 사실상 불투명 한 경우에만이 작업을 수행해야합니다.

+0

하위보기가 불투명하다는 것은 무엇을 의미합니까? –

+1

단순히 불투명 속성을 YES로 설정할 수도 있습니다. 메서드를 덮어 쓸 필요가 없습니다. 불투명은 "투명하지 않음"을 의미합니다. –

+0

그렇게 한 결과는 무엇입니까? –

관련 문제