アニメーション終了の検知方法
現在アニメーションに関する実装をしており、フェードインしながら画像が切り替わるアニメーションがスタートし、数秒経った後にフェードアウトしてアニメーションが終了するという処理をしようとしているのですが、アニメーションの設定を無限リピートにしており、フェードアウト後にもう一度アニメーションがスタートしてしまいます。なので、フェードアウトした後に画像を画面から消そうとしているのですが、それがうまくいきません。下記のように実装してもアニメーションがスタートした段階でcompletion:^(BOOL finished){
以下が呼ばれてしまいます。
[UIView animateWithDuration:0.5f
delay:0.5f
options:UIViewAnimationOptionCurveEaseIn
animations:^{
[self imageFade:_imageView fadeIn:0 fadeOut:1 delay:0];
_imageView.animationImages = imageList;
_imageView.animationDuration = _duration;
_imageView.animationRepeatCount = 0;
[_imageView startAnimating];
} completion:^(BOOL finished){
[_imageView removeFromSuperview];
}];
アニメーションの終了を検知するにはどうすればよろしいでしょうか?
ちなみにanimationsブロックにあるimageFadeメソッドは以下のようになっており、フェードインとフェードアウトを開始する時間をし、フェードアウトが終わればimageviewをviewから削除するという処理を行っています。
- (void)imageFade:(UIImageView *)imageView fadeIn:(int)fadeIn fadeOut:(int)fadeOut delay:(int)delay
{
imageView.alpha = fadeIn;
[UIView animateWithDuration:1 delay:delay options:UIViewAnimationOptionCurveEaseIn
animations:^{ imageView.alpha = fadeOut;}
completion:^(BOOL finished){
[self imageFade:_imageView fadeIn:1 fadeOut:0 delay:_fadeDelay];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, _finishDelay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[_imageView removeFromSuperview];
});
}];
}