2011-03-21 2 views
1

커스텀 버튼이있는 커스텀 NSView를 가지고 있는데 버튼은 NSView의 drawRect 메소드에서 서브 뷰로 추가됩니다.drawRect를 호출하는 원인을 알려주는 방법은 무엇입니까?

이제 버튼을 누르면 부모보기의 drawRect가 반복적으로 호출됩니다. 때로는 응용 프로그램을 종료 할 때만 멈 춥니 다. drawRect의 간단한 로그 문을 통해이 사실을 알 수 있습니다.

이제는 앱에서 더 큰 아키텍처 문제가 발생한다는 것을 알고 있습니다.이 뷰를 반복적으로 그려지는 원인을 추적하려면 어디로 가야합니까?

감사합니다.

답변

1

먼저 하위 메시지를 drawRect:에 추가하면 안됩니다.

사용자 지정 그림을 그리는 중이거나 하위보기를 추가하고 있습니까? 그림을 그리는 중이라면 drawRect:을 구현하면 안됩니다.

initWithFrame:에 하위보기를 추가 한 다음 self.bounds을 기준으로 하위보기의 프레임을 layoutSubviews에 설정하려고합니다.

질문이 있으시면 언제든지 문의하십시오.

EDIT : NSView가 아니라 UIView에 대해 묻는 것을 깨달았습니다. 필자는 NSView를 한번도 사용해 본 적이 없지만 유사하게 작동합니다.

EDIT 2 : NSView에 대해 조금 읽었지만 layoutSubviews이없는 것 같습니다. 아마도 프레임을 drawRect:으로 설정해야할까요? 나는 아직도 당신이 drawRect:에 서브 뷰를 추가하고 싶지 않다는 것을 확신합니다.

+0

답장을 보내 주셔서 감사합니다. drawRect를 남용하고 있음을 깨닫지 못했습니다. 나는 하위 뷰의 추가를 이동하고 필요할 때만 호출되도록 보장했으며 현재 모두 잘 작동하고 있습니다. – BenL0