模仿抖音App的主导航框架
- 手势 push
- 为单个控制器关闭 pop 手势支持
- 为所有控制器关闭 pop 手势支持
- Present 的 push 和 pop 动画
pod 'QHNavigationControllerMan'
0.1.2使用手动添加手势push,代码如下
//AppDelegate:
if let navigationC = self.window?.rootViewController as? QHNavigationController {
navigationC.addGesturePush()
}
//或者
//UIViewController:
if let navigationC = self.navigationController as? QHNavigationController {
navigationC.addGesturePush()
}
0.1.1直接使用
目前Demo由于首页是有左广告页,会控制root的scrollView的滑动状态,因此下面的两个回调需要bool相同,第一个是true,而后一个是false的话,就不会回调End(即第三个func),只有这种情况才有问题。
QHNavigationControllerProtocol的实现里面
func navigationControllerShouldPush(_ vc: QHNavigationController) -> Bool
func navigationControllerDidPushBegin(_ vc: QHNavigationController) -> Bool
func navigationControllerDidPushEnd(_ vc: QHNavigationController)
需要说明下,这里逻辑是对的,第一其实是第二个的状态回调,就是拿bool而没有其他操作的API。
手势push跟下面链接的
JPNavigationController
类似,不同之处在于这里实现的是添加全局手势,并没有改变原来的pop的手势,然后通过手势回调区分是否触发对应的手势功能。相对而言不用担心替换系统pop手势的target问题。 然后对于支持屏幕边缘滑动的手势push,理论上也是可以增加,但是目前还没增加对这部分的处理,所以暂时忽略。