1

私のクラスはCALayerサブクラスであり、メッセージをキャッチすると、オブザーバーを追加しました。次のNSNotificationCenterように機能します。

- (void)setCurrentAutoValue:(NSNotification *) obj
{

     [self setNeedsDiaplay];
}

しかし、これは機能しません。誰か助けてもらえますか?

4

4 に答える 4

0

別のスレッドを介して CALayers を更新するときに同じ問題が発生しました。同じスレッドで次の行のいずれかを直接呼び出すと、完全に機能しました。

              [self setNeedsDisplay:YES];
              [self needsDisplay];
              [self.circleLayer needsDisplay];
              [self.circleLayer setNeedsDisplay];

しかし、これらを別のスレッドから呼び出しても変化はありませんでした。少し遊んで、結局使用しました

              [self display];

CALayers の更新を強制したのはこれだけでした。Self は、いくつかのレイヤーとサブレイヤーを含む NSOpenGLView です。多分これが役立つかもしれません。すべての CALayer で同じ方法が利用できます。たぶん、ディスプレイを呼び出す必要があります。

于 2012-12-13T13:46:05.743 に答える