2

私は単純な UIImageView アニメーションに取り組んでいます。基本的に、0 から 9 までの一連の画像番号を取得し、このコードを使用してそれらをアニメーション化しています。

myAnimation.animationImages = myArray;
myAnimation.animationDuration = 0.7;
myAnimation.animationRepeatCount = 12;
[myAnimation startAnimating];

ここで、myArray は uiimages の配列、つまり 0.png、1.png などです。

すべてが順調で、アニメーションも問題ありません。私が知る必要があるのは、アニメーションがいつ停止したかをいつ知ることができるかということです。NSTimer を使用できますが、そのためには、アニメーションの開始と停止を確認するストップウォッチが必要です。UIImageView のアニメーションがいつ停止したかを知る方法はありますか?

このスレを参考に見ました。

UIImageView startAnimating: シリーズの最後の画像で停止するにはどうすればよいですか?

4

3 に答える 3

4

animationDidStopSelector を使用します。これは、アニメーションが完了すると発生します。

[UIView setAnimationDidStopSelector:@selector(someMethod:finished:context:)];

次に、セレクターを実装します。

- (void)someMethod:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {

}
于 2012-05-03T15:52:28.183 に答える
1

はい、NSTimers を使用するよりもはるかに優れたアプローチがあります。iOS 4 以降を使用している場合は、ブロック アニメーションの使用を開始することをお勧めします。これを試して

 [UIView animateWithDuration:(your duration) delay:(your delay) options:UIViewAnimationCurveEaseInOut animations:^{

        // here you write the animations you want


    } completion:^(BOOL finished) {
        //anything that should happen after the animations are over


    }];

編集:おっと、あなたの質問を間違って読んだと思います。UIImageView アニメーションの場合、NSTimers またはスケジュールされたイベントを使用する以外に良い方法は考えられません。

于 2012-05-03T15:52:46.787 に答える
0

これを試すこともできます:

[self performSelector:@selector(animationDone) withObject:nil afterDelay:2.0];
于 2012-05-03T15:54:43.070 に答える