Переключение между подвидом UIViewcontroller.view с анимацией - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть один контроллер вида, который содержит два вида (redView, blueView).Представления меньше основного вида.

Я хочу перейти с redView на blueView с анимацией.Если использовать это, анимация не происходит.

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight 
                       forView:redView cache:YES]; // !!! I WILL CHANGE THIS

[self.view addSubview:blueView];
[redView removeFromSuperview];

[UIView commitAnimations];

В случае, если я изменяю код на это, то анимация в порядке, но весь mainView оживляет, что я не хочу, чтобы это происходилоЯ хочу, чтобы только subViews перевернулись.Я должен отметить, что 2 подпредставления находятся в одинаковом положении.(рамка) Есть идеи?

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight 
                       forView:self.view cache:YES];

[self.view addSubview:blueView];
[redView removeFromSuperview];

[UIView commitAnimations];

Ответы [ 3 ]

4 голосов
/ 22 декабря 2011

Используйте блочную анимацию вместо простой анимации от Apple о простой анимации. «Использование методов в этом разделе не рекомендуется в iOS 4 и более поздних версиях».

Анимация с использованием блоков

[UIView transitionWithView:containerView
                  duration:1.25
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^
{ 

                    [redView removeFromSuperview]; 
                    [containerView  addSubview:blueView];

                }
                completion:NULL];

containerView: основной вид, который будет анимирован.Также добавьте в свой контейнер RedView, который все :) для получения дополнительной информации посмотрите на

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

0 голосов
/ 23 декабря 2011

Решение найдено:

Я использую tempView, для которого я делаю анимацию. На tempView я добавляю view1 и view2.

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:tempView cache:YES];
[tempView addSubview:view2]; 
[view1 removeFromSuperview];
[UIView commitAnimations];

Дополнительно: для лучшей анимации вы можете использовать view1.visible = YES, NO вместо addSubview, removeFromSuperView, но они будут размещаться постоянно

0 голосов
/ 22 декабря 2011

В вашем первом примере похоже, что вы удаляете redView до того, как он сможет анимироваться, попробуйте удалить его после анимации.

Код:

[UIView setAnimationDidStopSelector:@selector(removeRedViewFromSuperview)];
...