0
for(NSInteger i = 0; i < 10; i++)
{
    ....
    singleThread = [[NSThread alloc] initWithTarget:self selector:@selector(changeLayerBackground) object:nil];
    [singleThread start];
}

次のような関数changeLayerBackground:

- (void) changeLayerBackground
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    animation.delegate = self;
    ......
    [layer addAnimation:selectionAnimation forKey:@"animation"];
}

この関数はanimationDidStop:finished:、ループ全体が終了した後にのみ呼び出されることがわかりました。

誰かがこれについて何か考えがありますか?
さて、これは、アニメーションのデリゲートがビューコントローラである自己であるためだと思いました。また、アニメーションはスレッドによって呼び出されるため、デリゲートは機能しません。しかし、私はそれを変更する方法がわかりません。スレッドを代わりに使用しようとしましたが、それでも機能しません。

どんな体でも私を助けることができますか?

私の目標は、アニメーションが呼び出されているときに、アニメーションが終了するまでループを一時停止してから、ループを続行することです。ループが終了するまで。

4

1 に答える 1

0

アニメーションをスレッドで実行しますか? すでに独自のスレッドで実行されているためです。ドキュメントが言うように、CoreAnimation は提供します

アプリケーションの実行ループとは無関係に、アニメーションを別のスレッドで実行できるようにする抽象アニメーション インターフェイス。

単にアニメーションを連鎖させたいだけですか?もしそうなら、このスレッドを見てください: chaining animations

于 2011-12-26T03:00:42.157 に答える