Я сделал нечто подобное, используя блочную анимацию, чтобы добиться этого эффекта. Каждый анимационный блок был определен в отдельной функции.
Предполагается, что оба изображения имеют одинаковый размер с экраном.
Одно изображение начинается полностью на экране, одно изображение начинается слева от экрана, его правая сторона совпадает с левой границей экрана (то есть, оно полностью за кадром слева).
Давайте назовем экранное изображение «A», а внеэкранное изображение «B».
function1 ()
Первый блок сдвигает ширину экрана обоих изображений вправо
По завершении он устанавливает изображение, только что перемещенное за пределы экрана ('A'), в левую часть экрана, а затем вызывает function2 ().
function2 ()
Второй блок сдвигает ширину экрана обоих изображений вправо
По завершении он устанавливает изображение, только что сдвинутое с экрана ('B'), влево к экрану, а затем вызывает function1 ().
Вот первая функция:
-(void)animate_1
{
[UIView animateWithDuration:roadTimerPeriod delay:0.0
options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionAllowUserInteraction
animations: ^{
// frame 1 moves off bottom
imageAnimatedRoad1.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480);
// frame 2 moves onto top
imageAnimatedRoad2.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480);
}
completion:^(BOOL finished)
{
// reset frame 1 ready to move on
imageAnimatedRoad1.frame = CGRectMake(0,-480,320,480);
[self animate_2];
} ];
}
Как вы думаете, это хорошее решение, или я пропустил нечто явно очевидное?