从导航堆栈中弹出视图控制器时从右侧滑入
Posted
技术标签:
【中文标题】从导航堆栈中弹出视图控制器时从右侧滑入【英文标题】:Slide in from the right when popping a view controller from a navigation stack 【发布时间】:2011-02-02 22:10:58 【问题描述】:现在,当我从导航控制器堆栈中弹出一个自定义视图控制器(使用动画:YES)时,它通常会向右滑出。我想让动画看起来和你推控制器时一样(从右侧滑入),但效果仍然是弹出而不是推。我应该如何开始我的探索?这应该在 viewWillAppear 中完成吗?
【问题讨论】:
【参考方案1】:我曾经做过一个视图的自定义动画,类似于这个。至于入门,我会研究the core animation framework。对于您想要的,比这更好的匹配可能是 Apple 文档中的 UIView animations。
基本上,您将viewDidLoad
中的框架设置为离屏。然后在viewDidAppear
中,将帧设置为结束帧,但将其包装在以下代码中:
[UIView beginAnimations:@"animationsNameThisCanBeAnythingOrNil" context:nil]
//Reset the frame here
[UIView commitAnimations];
我希望这会有所帮助!
【讨论】:
【参考方案2】:以防万一它对某人有所帮助,这是我用来完成所要求的代码:
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[self.navigationController.view layer] addAnimation:animation forKey:nil];
[self.navigationController popViewControllerAnimated:NO];
您可能需要确保您从中弹出的底层 UIView 具有清晰的背景,否则当您弹出时,您会看到旧的 UIView 在滑开时淡化为白色。
【讨论】:
以上是关于从导航堆栈中弹出视图控制器时从右侧滑入的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 在右侧添加了滑动以将视图控制器从堆栈中弹出。是不是可以通过向左滑动将其添加回来?