navigationbar闪现黑条,白条问题

作者: moonCoder | 来源:发表于2017-07-19 12:14 被阅读318次

    大家在开发中,有些viewcontroller需要隐藏navigationbar,经常在这跳转的时候会出现黑条,白条的情况,在网上一查大部分给出的方案是在

    - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     [self.navigationController setNavigationBarHidden:YES animated:animated];
    }
    - (void)viewWillDisappear:(BOOL)animated {
     [super viewWillDisappear:animated];
     [self.navigationController setNavigationBarHidden:NO animated:animated];
    }
    

    大部分情况这样确实把问题解决了,代码也不难理解在这个viewcontroller将要出现的把navigationbar隐藏,在这个viewcontroller将要消失的时候把navigationbar重新展现出来。
    可是当我们下一个跳转过去的viewcontroller也要隐藏navigationbar的时候,你的做法肯定也是复制上面的代码到需要隐藏的viewcontroller对吧,这时候你发现闪现的黑块又出现了, 为什么呢?
    问题的关键就在

    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [self.navigationController setNavigationBarHidden:NO animated:animated];
    }
    

    因为先是yes然后no然后yes,中间有个闪现的no。
    大家就会发现我能不能做到不管怎么跳转,我都能随心所欲的控制我的navigationbar出现和隐藏呢,答案是能的。
    一般大家都有基类viewcontroller,只要在基类viewcontroller中

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [self.navigationController setNavigationBarHidden:self.navigationHidden animated:animated];
    }
    

    这样你就随心所欲的控制了,只要你想要hidden。给navigationHidden属性赋值yes就好了。

    方式二:根据navigation的代理方法来设置

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    
        BOOL isHiddenNavBar = [viewController isKindOfClass:[self class]];
        [self.navigationController setNavigationBarHidden:isHiddenNavBar animated:YES];
    }
    

    文章完,但愿有帮到你。比心

    相关文章

      网友评论

      本文标题:navigationbar闪现黑条,白条问题

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