0

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

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

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

如果有人能对这种情况有所了解,我将不胜感激。

谢谢你。

4

1 回答 1

0

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

于 2012-07-23T01:33:18.027 回答