0

いくつかのサブビューを持つ NSView (メインビューと呼びましょう) があります。これらのサブビューの 1 つには、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 に答える