9

我环顾四周,并没有找到我正在寻找的东西。

推送视图控制器时有没有办法获得翻转动画?

我读到您可以通过使用模态视图控制器来更改动画,但 AFAIK 模态视图的动画是从下到上的,这不是我想要的。有没有办法以某种方式获得翻转动画?

4

4 回答 4

50

像这样的东西应该工作

[UIView beginAnimations:@"animation" context:nil];
[self.navigationController pushViewController: yourviewcontroller animated:NO]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations];

调用 pushViewController 时不要忘记将动画设置为 NO

于 2010-05-26T23:03:04.247 回答
15

这也适用..iOS 4.0 and greater

[UIView  transitionWithView:self.navigationController.view duration:0.8  options:UIViewAnimationOptionTransitionFlipFromLeft
                             animations:^(void) {
                                 BOOL oldState = [UIView areAnimationsEnabled];
                                 [UIView setAnimationsEnabled:NO];
                                 [self.navigationController pushViewController:viewController animated:YES];
                                 [UIView setAnimationsEnabled:oldState];
                             }
                             completion:nil];
于 2012-09-21T06:55:14.007 回答
4
- (void)viewWillDisappear:(BOOL)animated {
[UIView beginAnimations:@"animation2" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration: 0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; }

在新的视图控制器中,当工具栏中的后退按钮被按下时,它会以相同的方式向后翻转(而不是向左滑动)——确保在此处启用动画,例如,如果您制作自定义按钮来弹出堆栈,请使用:

- (void) backToPrevious: (id) sender 
{
    //[self.navigationController popViewControllerAnimated:YES];
    [self dismissModalViewControllerAnimated:YES];
}
于 2011-04-25T15:41:38.583 回答
1

modalTransitionStyle对于模态呈现的视图控制器,您可以使用属性更改动画。AFAIK,没有办法改变导航控制器的推送动画(除了从头开始重建 UINavigationController)。

于 2010-03-24T10:21:58.587 回答