我有一个基本的Cocoa应用程序,其自定义NSCollectionView
会覆盖drawRect:
以绘制红色背景(仅供参考)。
我注意到,在看似随机的时间,虽然我调用drawRect:
,但setNeedsDisplay:YES
不会被调用。其他时候它工作,集合视图有红色背景。
花了我几个小时,但后来我终于发现在视图层次结构中,其中一个父视图是图层支持的视图(我已经签入了“核心动画层” Interface Builder为元素添加阴影。)
将父视图更改为不使用图层支持可立即解决问题,然后始终按预期调用drawRect:
。
让我感到困惑的是,在父视图上启用了图层支持后,有时会调用drawRect:
,但并非总是如此。
如果父视图是由图层支持的,我是否应该假设我无法在任何子视图中可靠地覆盖 drawRect:
?
答案 0 :(得分:1)
观看有关图层支持视图的WWDC 2012视频,并阅读-layerContentsRedrawPolicy
的文档。听起来像你想要NSViewLayerContentsRedrawOnSetNeedsDisplay
。