Перемещение между изображениями 1, 2, 3 вместо изображения 1,3 (iPhone SDK) - PullRequest
3 голосов
/ 12 февраля 2010

Я использую довольно стандартный код, чтобы перевернуть 2 UIImageViews, которые находятся внутри небольшого представления. (Я поражен, что это сработало!)

Но что, если бы у меня было ТРИ UIImageViews в небольшом представлении ... и я хотел переключиться между всеми 3?

Я думал, что смогу просто вырезать / вставить 2 копии своего кода ... но я не думаю.
Когда я пытаюсь перевернуть 1> 2 .. а затем 2> 3 ... он просто переворачивается один раз ... переходя непосредственно от 1> 3. Что случилось с 2 ????

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES]; 
[image1 removeFromSuperview];    
[myView addSubview:image2];
[UIView commitAnimations];

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES]; 
[image2 removeFromSuperview];    
[myView addSubview:image3]; 
[UIView commitAnimations];

Ответы [ 3 ]

1 голос
/ 12 февраля 2010

Анимации не связаны друг с другом, как это. По сути, они делают обе анимации одновременно. Вам нужно создать новый метод для второго броска, который будет вызываться после завершения первого:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)contextn {
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES]; 
    [image2 removeFromSuperview];    
    [myView addSubview:image3]; 
    [UIView commitAnimations];
}

Затем в существующем методе поместите эту строку:

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

вроде так:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[image1 removeFromSuperview];    
[myView addSubview:image2];
[UIView commitAnimations];

Для получения дополнительной информации, проверьте Apple Docs

0 голосов
/ 21 февраля 2010

Jill

Во втором блоке кода выполните следующие действия.

[UIView beginAnimations:nil context:NULL];

// This will cause your second animation block to wait 0.5 second, which will be 
// enough time for the second one to kick in and do it's thing.
[UIView setAnimationDelay:0.5];

[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES]; 
[image2 removeFromSuperview];    
[myView addSubview:image3]; 
[UIView commitAnimations];
0 голосов
/ 12 февраля 2010

Вы можете установить задержку 0,5 секунды на начало второй анимации.

Кроме того, вы можете проверить анимацию по ключевым кадрам, чтобы делать более сложные вещи, подобные этой.

...