大家在开发中,有些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就好了。
文章完,但愿有帮到你。比心
作者:moonCoder
链接:http://www.jianshu.com/p/06230d170d93
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。