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

をCABasicAnimationを実行する方法:はスレッドで

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

私は、全体のループが終了した後animationDidStop:finished:のみ呼び出される関数を発見しました。

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

どのような体で私を助けることができますか?

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

+1

メインスレッドであなたのアニメーションを動かすべきではありませんか? – Abizern

答えて

0

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

アニメーションは、アプリケーションの実行ループから独立し 別のスレッド上で実行することを可能にする抽象アニメーションインターフェイスを提供しますと言います。

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