iphone dev:如何控制视图过渡动画?

时间:2012-06-23 14:38:09

标签: iphone ios

我正在使用这样的代码来呈现一个新视图,我不喜欢它。目前默认动画是从下到上显示视图,但我希望它从右到左动画(飞入),是否可以更改默认动画类型以及如何?感谢。

[self presentModalViewController:navController animated:animated];

2 个答案:

答案 0 :(得分:1)

您可以像这样禁用上滑动画:

[self presentModalViewController:navController animated:NO];

然后您可以提供自己的动画代码:

navController.view.frame = CGRectMake(320, 0, navController.view.frame.size.width, navController.view.frame.size.height);

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
navController.view.frame = CGRectMake(0, 0, navController.view.frame.size.width, navController.view.frame.size.height);
[UIView commitAnimations];

此示例通过平滑的速度曲线从右侧为您提供“飞入”。

另一种方法是使用右侧带有navigationcontroller的内置幻灯片:

[self.navigationController pushViewController:navController animated:YES];

在这个中,你的top-viewcontroller需要是一个UINavigationController,它的rootcontroller需要是你的viewcontroller。然后你可以推送其他视图控制器。

答案 1 :(得分:0)

我已经这样做了,并且它正在为我工​​作尝试:

[UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:0.6];
            [UIView setAnimationDelegate:self];
            [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.View2.superview cache:YES];
            [self.View2 removeFromSuperview];   
            [self performSelector:@selector(replaceViews2) withObject:nil afterDelay:0.6];
            [UIView commitAnimations];