Предполагая, что ваш UIImage находится в UIImageView, а размер изображения составляет 320 x 480 ...
Ваш блок анимации может вызывать метод, когда он завершен.Этот метод сбрасывает позицию вашего UIImageView и затем запускает анимацию заново.
Блок анимации:
-(void)animate {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(myCallback:finished:context:)];
CGRect frame = yourImageView.frame;
frame.origin = CGPointMake(0, 480);
yourImageView.frame = frame;
[UIView commitAnimations];
}
Обратный вызов:
(void)myCallback:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
CGRect frame = yourImageView.frame;
frame.origin = CGPointMake(0, 0)
yourImageView.frame = frame;
[self animate];
}