美文网首页
UINavigationBar隐藏问题

UINavigationBar隐藏问题

作者: fangfangzhuzhu | 来源:发表于2018-03-30 15:10 被阅读0次

    由于项目中使用FDFullscreenPopGesture框架,实现滑动返回功能。
    在需要隐藏导航栏的控制器viewWillAppear方法中使用下面代码隐藏导航栏会出现问题

    [self.navigationController setNavigationBarHidden:YES animated:NO];
    

    从有NavigationBar到无NavigationBar,手势返回的时候,有NavigationBar的控制器导航栏会变成白色,或者消失不见了;
    于是加上动画效果,问题解决,但页面会有明显上移的动画

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    

    解决办法:使用FDFullscreenPopGesture框架的fd_interactivePopDisabled属性设置,隐藏导航栏

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.fd_prefersNavigationBarHidden = NO;
    }
    

    并且如果是控制器作为导航控制器的根控制器,需要在viewWillAppear:和viewWillDisappear:方法里面添加对是否隐藏NavigationBar的判断;

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(CGFLOAT_MIN * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
       UIViewController *vc = [self.navigationController.viewControllers lastObject];
       if (vc.fd_prefersNavigationBarHidden) {
           [self.navigationController setNavigationBarHidden:YES animated:NO];
       } else {
           [self.navigationController setNavigationBarHidden:NO animated:NO];
       }
    });
    

    这样可以实现无NavigationBar控制器没有上移动画,并且从有NavigationBar到无NavigationBar正常滑动返回的功能。

    参考文章:
    https://www.jianshu.com/p/bbc2305d83e2

    相关文章

      网友评论

          本文标题:UINavigationBar隐藏问题

          本文链接:https://www.haomeiwen.com/subject/stdicftx.html