gpt4 book ai didi

cocoa - 当父 View 受图层支持时,drawRect: 并不总是在 setNeedsDisplay:YES 之后调用

转载 作者:行者123 更新时间:2023-12-03 17:57:33 26 4
gpt4 key购买 nike

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

我注意到,在看似随机的时间,尽管我调用了 setNeedsDisplay:YES,但 drawRect: 不会被调用。其他时候它可以工作并且 Collection View 有红色背景。

我花了几个小时,但后来我终于注意到,在 View 层次结构的高处,父 View 之一是层支持的 View (我 checkin 了“核心动画层”) Interface Builder 向元素添加阴影)。

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

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

如果父 View 是分层支持的,我是否应该假设我无法可靠地覆盖任何 subview 中的drawRect:

最佳答案

观看有关图层支持 View 的 WWDC 2012 视频,并阅读 -layerContentsRedrawPolicy 的文档。听起来你想要NSViewLayerContentsRedrawOnSetNeedsDisplay

关于cocoa - 当父 View 受图层支持时,drawRect: 并不总是在 setNeedsDisplay:YES 之后调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com