之前随手写过一篇《使用UIScreenEdgePanGestureRecognizer实现swipe to pop效果》,挺粗糙的。 现在使用默认模板创建的iOS App都支持手势返回功能,如果导航栏的返回按钮是自定义的那么则会失效,也可以参考这里手动设置无效。
如果是因为自定义导航按钮而导致手势返回失效,那么可以在NavigationController的viewDidLoad函数中添加如下代码:
这样写了以后就可以通过手势滑动返回上一层了,但是如果在push过程中触发手势滑动返回,会导致导航栏崩溃(从日志中可以看出)。针对这个问题,我们需要在pop过程禁用手势滑动返回功能:
除了使用系统默认的动画,还可以使用自定义过渡动画(丰满的文档):
如下这个代理方法是用来提供一个非交互式的过渡动画的:
而下面这个代理方法则是提供交互式动画:
这两个组合起来使用。首先,我们需要有个动画:
其次,交互式动画是通过
同样地,自定义的动画也会有上面提到的导航栏崩溃问题,也可以通过类似的方法来解决:
补充:位于当前navgationController的第一个([0])viewController时需要设置手势代理,不响应。
|
|