仅在10.8下应用CIFilter后才会调用NSView的drawRect

时间:2012-07-22 14:54:20

标签: nsview drawrect setneedsdisplay osx-mountain-lion cifilter

我有一个NSView(让我们称之为mainview),带有一些子视图。其中一个子视图具有基于时间(通过计时器调用)动画,该动画在其drawRect方法中完成。我还有一些CIFilter效果应用于主视图。

所有工作都按预期在10.6.x和10.7.x下工作(即我看到我的动画发生并应用过滤器)。

问题只出现在10.8以下 - 动画在我将过滤器(使用setContentFilters:和setWantsLayer :)应用到主视图后立即停止,并且只有在我删除过滤器后才会恢复(使用setContentFilters:nil)。当应用过滤器时,甚至不会调用我的子视图的drawRect方法...

如果有人能够了解情况,我真的很感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

结果是setNeedsDisplay:不是线程安全的。我有一个setNeedsDisplay:调用我的子视图不在主线程上。调用我的主线程解决了这个问题。