2011-12-22 2 views
0

У меня есть один контроллер представлений, который содержит два вида (redView, blueView). Представления меньше основного вида.Изменение между UIViewcontroller.view subviews с анимацией

Я хочу изменить с 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]; 

ответ

0

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

я использую 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

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

Код:

[UIView setAnimationDidStopSelector:@selector(removeRedViewFromSuperview)]; 
+0

Спасибо за вашу помощь, но это не сработало. Я нашел решение. [UIView beginAnimations: nil context: nil]; [UIView setAnimationDuration: 1.0]; [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView: tempView cache: YES]; [tempView addSubview: view2]; [view1 removeFromSuperview]; [UIView commitAnimations]; –

+0

Я еще не могу опубликовать его из-за моей репутации –

4

Используйте блок анимации вместо простой анимации, яблочная о простой анимации «Использование методов в этом разделе не рекомендуется в прошивкой 4, а затем»

Анимация С Блока

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

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

       } 
       completion:NULL]; 

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

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

Смежные вопросы