2012-06-24 2 views
0

NSCollectionView의 기본 코코아 응용 프로그램은 drawRect:을 오버라이드하여 빨간색 배경을 그립니다.drawRect : setNeedsDisplay 이후에 항상 호출되는 것은 아닙니다. 부모보기가 레이어 백일 경우 YES

나는 무작위로 겉보기에 을 호출했지만 drawRect:이 호출되지 않는다는 것을 알아 챘습니다. 다른 시간에는 그것이 효과가 있었고 컬렉션보기에는 빨간색 배경이있었습니다.

나는 몇 시간이 걸렸지 만 마침내 부모 계층 뷰 계층 중 하나가 상위 계층 뷰의 계층 지원 뷰 (인터페이스 작성기에서 "Core Animation Layer"를 선택하여 추가했습니다. 요소에 그림자).

레이어보기를 사용하지 않도록 부모보기를 변경하면 즉시 문제가 해결되고 drawRect:은 항상 예상대로 호출됩니다.

내가보기에 부모보기에서 레이어 백업을 사용하면 drawRect:이 가끔씩 호출되지만 항상 그런 것은 아닙니다.

부모보기가 레이어 기반 인 경우 은 모든 하위보기에서drawRect:을 올바르게 재정의 할 수 없다고 가정해야합니까?

+0

"덮어 쓰기"를 "무시"로 변경하도록 편집되었습니다. – NSResponder

답변

1

레이어 기반보기에 대한 WWDC 2012 비디오를보고 -layerContentsRedrawPolicy에 대한 설명서를 읽으십시오. 원하는 소리가 NSViewLayerContentsRedrawOnSetNeedsDisplay입니다.