导航栏手势替换

导航栏手势替换

IOS小彩虹2021-08-22 0:12:29150A+A-

跳转过去的时候导航栏还是在的

let testVC = TestViewController()
testVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(testVC, animated: true)

但是这样就需要每个跳转都要写一次就很麻烦

把这个方法截获到 当导航栏发生push的时候对目标控制器隐藏tabbar

XMGNavigationController是项目中的导航栏所以设置root的时候用的导航栏是这个类

  • swift 简化版
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        viewController.hidesBottomBarWhenPushed = true
        super.pushViewController(viewController, animated: animated)
    }
  • OC(这个是我项目中的OC的导航栏的写法)
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    
    // 隐藏TabBar
    if (self.childViewControllers.count > 0) {
        viewController.hidesBottomBarWhenPushed = YES;
        //解决push多个控制器后,popToRootViewController Tabbar消失的问题 ios14出现的问题
        if (self.childViewControllers.count > 1) {
            viewController.hidesBottomBarWhenPushed = NO;
        }
    }
    
    
    [super pushViewController:viewController animated:animated];
}
  • 假如我们要跳转的控制器需要自定义的导航栏需要隐藏导航栏
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: true)
}
//控制器小时候的时候要重新设置为显示不然会影响其他的地方
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: true)
}

这样就不能跳转回去了只能加按钮了但是我想用手势 注意这里这个导航栏一定要用这个类你才能在自己写的导航栏控制器类中改代码 用手势可以pop回去

    override func viewDidLoad() {
        super.viewDidLoad()

        // 1.使用运行时, 打印手势中所有属性
        guard let targets = interactivePopGestureRecognizer!.value(forKey:  "_targets") as? [NSObject] else { return }
        let targetObjc = targets[0]
        let target = targetObjc.value(forKey: "target")
        let action = Selector(("handleNavigationTransition:"))
        
        let panGes = UIPanGestureRecognizer(target: target, action: action)
        view.addGestureRecognizer(panGes)
    }
  • interactivePopGestureRecognizer 这个是导航栏自带的手势,它的范围不是很大就是左边一点点

  • 获取到这个手势的targt 和 action 然后把这两个东西给新加的手势中这样新加的手势就有了这个功能了
  • 然后把手势加到View上

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们