从导航堆栈中弹出视图控制器时从右侧滑入

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 在右侧添加了滑动以将视图控制器从堆栈中弹出。是不是可以通过向左滑动将其添加回来?

UICollectionView 调用 scrollViewDidScroll:从导航堆栈中弹出时

如何在不使用导航栏的情况下从导航堆栈中弹出控制器