0

我有一个基本的 Cocoa 应用程序,它有一个自定义NSCollectionView覆盖drawRect:以绘制红色背景(用于说明目的)。

我注意到在看似随机的时间,drawRect:虽然我调用了setNeedsDisplay:YES. 其他时候它工作并且集合视图具有红色背景。

我花了几个小时,但后来我终于注意到在视图层次结构的高处,其中一个父视图是一个支持层的视图(我在 Interface Builder 中检查了“核心动画层”以向元素添加阴影) .

将该父视图更改为不使用图层支持立即解决了问题,drawRect:然后总是按预期调用。

令我困惑的是,在父视图上启用图层支持时,drawRect:有时会调用它,但并非总是如此。

如果父视图是图层支持的,我是否应该假设我不能在任何子视图中可靠地覆盖? drawRect:

4

1 回答 1

1

观看 WWDC 2012 关于 layer-backed view 的视频,并阅读-layerContentsRedrawPolicy. 听起来像你想要NSViewLayerContentsRedrawOnSetNeedsDisplay的。

于 2012-06-25T11:29:07.963 回答