現在アニメーションに関する実装をしており、フェードインしながら画像が切り替わるアニメーションがスタートし、数秒経った後にフェードアウトしてアニメーションが終了するという処理をしようとしているのですが、アニメーションの設定を無限リピートにしており、フェードアウト後にもう一度アニメーションがスタートしてしまいます。なので、フェードアウトした後に画像を画面から消そうとしているのですが、それがうまくいきません。下記のように実装してもアニメーションがスタートした段階で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];
                         });
                     }];
}