2011-08-13 16 views
0

ブロックアニメーションの方向に進み、UIImageViewアニメーションで複数のアニメーションと「終了」イベントを実装しようとしましたが失敗しました。ブロックアニメーション - UIImageの配列を循環させる方法

私はUIImage配列を持っています。これは、逆方向に循環する必要があります。ここで私はこれまで持っているものです。

__block int i = 9; 
[UIView animateWithDuration:4.0 
       animations:^{ 
        self.fooView.image = fooImage[i]; 
        [self.view addSubview:self.fooView]; 
        i--; 
       } 
       completion:NULL]; 

これは喜んで[] fooImageの第九の要素を表示しないが、それは残りの部分を反復しません。

これは、このコンテキストでどのブロックが実際に実行できるかについての誤解ですか?私はwhileループをラップして、 "i"を減らしてみましたが、最初の要素だけで終わってしまいました(私はそれを期待していました)。このインスタンスの配列をどのように反復処理すればよいでしょうか?おそらく9種類のアニメーションブロックがありますか?

任意のヒントを感謝して受信され、お時間に感謝

SC。

+0

なぜUIImageViewアニメーションを使用しないのですか?あなたはそれぞれの画像の間に移行が必要ですか? – jtbandes

+0

画像の配列にC配列を使用しません。むしろNSArrayを使用したいと思います。 – dasdom

+0

@jtbandes - あなたの提案をありがとうが、私はUIImageViewの観点から、私は実行可能な解決策を見つけることができませんでした。あなたはその特定のスレッドにKVOの提案を返信しました。 Cheers – swisscheese

答えて

1

あなたのアニメーション補完ハンドラはNULLです。アニメーションが完了しても何も起こらないことを意味します。 実際に何もアニメーション化しない場合、アニメーションブロックを使用するのは奇妙です。アニメーション化するものがない場合、アニメーションは競技ハンドラを呼び出す前に4秒待たない。

__block int i = 9; 
void(^process)(void(^recursive)()); 
process = ^(void(^recursive)()) { 
    --i; 
    [UIView animateWithDuration:4.0 
        animations:^{ 
         NSLog(@"%d", i); 
        } 
        completion:^(BOOL finished) { 
         recursive(recursive); 
        }]; 
}; 
process(process); 
+0

これは本当に奇妙で種類が厄介です。また、 'void(^)(void(^)())'型のパラメータを 'void(^)()'に渡さないとコンパイラの警告やエラーが発生しますか? – jtbandes

関連する問題