在Reeder中,看起来弹出的视图控制器不会从内存中移除,或者不管是什么典型行为,因为在弹出并返回到前一个视图控制器之后,您可以从右向左滑动以稍微查看,如果您在离开之前滚动前一个视图控制器,您仍然可以看到滚动发生.这种快速跳回到您正在查看的先前视图控制器的能力,而不必从头开始预加载正是我正在寻找的.
基本上,在iOS 7中默认情况下,当您从视图控制器的左边缘向右滑动时,它会将其弹出导航堆栈.我喜欢能够从右边缘向左滑动以将其添加回来.可以想象,在Web浏览器中,您可以在按下后单击“前进”按钮. (或者在iOS 7的Safari中你怎么能做到这一点.)
这个功能是默认情况下iOS 7的一部分,我只是找不到它?或者有关于如何完成它的任何信息?
解决方法
>在iOS 7中,您可以使用自定义视图控制器转换并实现交互式视图控制器转换.有关概念性描述,请参阅WWDC 2013视频Custom Transitions Using View Controllers.基本过程是:
>创建一个动画控制器,定义动画的内容.动画控制器是符合UIViewControllerAnimatedTransitioning的对象. (注意,必须为标准的推送动画定义自定义动画控制器似乎很奇怪,但是在下面你会看到我们想要一个手势识别器与交互控制器交互,但是你不能定义一个自定义交互控制器如果您还没有定义自定义动画控制器.)
>实例化交互控制器.您可以创建自己的符合UIViewControllerInteractiveTransitioning的交互控制器类,但最简单的方法是简单地实例化一个UIPercentDrivenInteractiveTransition对象.
>现在您已拥有交互控制器,您可以将手势识别器(例如UIScreenEdgePanGestureRecognizer)链接到它.手势识别器将调用调用交互控制器的updateInteractiveTransition来指定动画的进度,因为它对应于连续手势.
>显然,如果您要识别从右边缘滑动到特定场景的“推动”,那么您将跟踪“下一个”场景将会是什么.有时你会有一系列预定义的视图控制器.有时您只需保留一堆先前从中弹出的视图控制器,以便您可以从右侧滑动以将其重新打开.它只取决于所需的用户体验.
iOS 7客户转换提供了令人难以置信的控制,可以自定义与交互式转换相关联的动画和手势.但要做到这一点需要做一些工作.
>如果您只是想在一系列视图控制器之间简单地进行幻灯片切换,那么可以使用UIPageViewController
.在iOS 6及更高版本中,您可以使用UIPageViewControllerTransitionStyleScroll的transitionStyle. (不幸的是,在iOS 5中,您只有页面卷曲过渡.)
>在iOS 5及更高版本中,您也可以使用自定义容器控制器自己执行此操作,手动添加子视图控制器视图,在手势期间更改帧.显然,您还必须执行所有自定义容器调用(例如addChildViewController,removeChildViewController,willMoveToParentViewController,didMoveToParentViewController等).请参阅View Controller编程指南的WWDC 2011视频Implementing UIViewController Containment或Creating Custom Container View Controllers部分.