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