iOS 右滑POP并且隐藏导航栏

/ 0评 / 0

开发的时候提的需求是个人中心的导航栏要隐藏,但是二级页面不能隐藏导航栏,并且要侧滑POP,我们这里直接使用右滑手势的扩展 UINavigationController+FDFullscreenPopGesture,使用的时候直接

navigationV.fd_fullscreenPopGestureRecognizer.enabled = YES;

就行了。

首先我们自定义导航栏,重写下面的方法:

//push的时候判断到子控制器的数量。当大于零时隐藏BottomBar 也就是UITabBarController 的tababar
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
    if(self.viewControllers.count > 0){
        viewController.hidesBottomBarWhenPushed = YES;
    }
    [super pushViewController:viewController animated:animated];
}

然后在隐藏导航栏的页面按照下面的代码设置

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.fd_prefersNavigationBarHidden = YES;//其实和下面这句有点重复了,不过不影响
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

这样就可以做到侧滑返回并且隐藏导航栏了,而且动画比较平滑。
顺便奉上一个防止页面的按钮一块点击的方法

//防止按钮同时点击一块跳转
-(void)setExclusiveTouchForButtons:(UIView *)myView{
    for (UIView * v in [myView subviews]) {
        if([v isKindOfClass:[UIButton class]]){
            [((UIButton *)v) setExclusiveTouch:YES];
        }else if ([v isKindOfClass:[UIView class]]){
            [self setExclusiveTouchForButtons:v];
        }
    }
}

评论已关闭。