将 Push ViewController 动画更改为看起来像“pop”动画,从左到右进入
Posted
技术标签:
【中文标题】将 Push ViewController 动画更改为看起来像“pop”动画,从左到右进入【英文标题】:Changing Push ViewController animation to look like a "pop" animation, come in from left to right 【发布时间】:2013-08-17 18:54:50 【问题描述】:现在我正在使用故事板中的 segue 来推送视图控制器,并且只有一次推送转换。如何模仿代码中的“Pop”过渡?我现在可以在使用故事板进行其他过渡的同时执行此操作吗?
更新
我尝试了此处第一条评论中的建议,并进行了一些更改。这是我所拥有的:
UIViewController *dst = [self destinationViewController];
UIViewController *src = [self sourceViewController];
[dst viewWillAppear:YES];
[dst viewDidAppear:NO];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGRect f = CGRectMake(-screenBounds.size.width, 0, screenBounds.size.width, screenBounds.size.height);
dst.view.frame = f;
f.origin.x = screenBounds.size.width;
src.view.frame = f;
[UIView transitionFromView:src.view
toView:dst.view
duration:0.3
options:UIViewAnimationOptionTransitionNone
completion:^(BOOL finished)
[dst viewDidAppear:YES];
UINavigationController *nav = src.navigationController;
[nav popViewControllerAnimated:NO];
[nav pushViewController:dst animated:NO];
];
这几乎是我想要的,但原来的视图控制器只是消失了,而不是向右滑动。
【问题讨论】:
你必须使用自定义动画,weeny.tk/rF2xe9C 【参考方案1】:您可以在您的 stroyboard 上创建 Segue 类型“Custom”并创建一个名为“popSegue”的新 UIStoryboardSegue
类在 popSegue.m 文件中添加:
-(void)perform
UIViewController *sourceViewContreoller = [self sourceViewController];
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFromLeft]; //or kCATransitionFromRight
[animation setDuration:0.25];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:
kCAMediaTimingFunctionEaseIn]];
[sourceViewContreoller.navigationController.view.layer addAnimation:animation forKey:@"animateOpacity"]; //or key=@"fadeTransition"
[sourceViewContreoller.navigationController popViewControllerAnimated:YES];
[CATransaction commit];
在故事板编辑器中选择 segue 并将 Segue 类更改为“popSegue”。 将标识符设置为“popSegue”。 试试这个并评论你的结果
【讨论】:
我实际上是想推送一个视图,但要使用弹出的过渡。所以推送的视图将来自从左到右。抱歉,在描述中,我的意思是从左到右,只是做了更改。 这只是弹出导航控制器。我想推送一个视图控制器,但让过渡看起来像是在弹出。以上是关于将 Push ViewController 动画更改为看起来像“pop”动画,从左到右进入的主要内容,如果未能解决你的问题,请参考以下文章
TransformAnimation - 一个超简单的导航转换动画
TransformAnimation - 一个超简单的导航转换动画
与 Push 交互后导航到特定 ViewController
将 navigationController 上的 viewController 推送到动画底部到顶部 iPhone SDK