我有一个视图控制器,它包含两个视图(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动画,我不想发生这种情况。我只想翻转子视图。我应该注意到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 :(得分:4)
使用Block动画而不是简单的动画,关于简单动画的苹果“在iOS 4及更高版本中不鼓励使用本节中的方法”
使用Block的动画
[UIView transitionWithView:containerView
duration:1.25
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^
{
[redView removeFromSuperview];
[containerView addSubview:blueView];
}
completion:NULL];
containerView:是动画的主视图。 还要添加到您的containerView redView, 所有:) 欲了解更多信息,请查看
答案 1 :(得分:0)
在你的第一个例子中,看起来你在动画之前删除了redView,尝试在动画之后删除它。
代码:
[UIView setAnimationDidStopSelector:@selector(removeRedViewFromSuperview)];
答案 2 :(得分: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,但它们将一直分配