iOS导航条显示与隐藏的坑

最近遇到在写导航条的显示与隐藏,界面A没有导航条,需要push出一个带导航的界面B。

代码就是在navigationViewController.m文件实现UINavigationControllerDelegate的

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

{

[self setNavigationBarHidden:[self isNeedHidden] animated:YES];

}

其中isNeedHidden方法的逻辑参照需要自己处理。

这里就可以实现导航条的显示与隐藏了,但是我这里稍微特殊的是界面A的状态栏是白色,界面B的状态栏是黑色,所以在界面A的.m文件中设置了方法

- (UIStatusBarStyle)preferredStatusBarStyle{

return UIStatusBarStyleLightContent;

}

单单这样设置就可以完成所需要的效果,但是在手势返回界面A的时候,如果快速滑动一小段距离后取消掉返回手势,当前的页面的状态栏就会出现隐藏掉的BUG。

后来发现原来是设置状态栏的问题,最后在Nav中添加了

- (UIStatusBarStyle)preferredStatusBarStyle

{

return UIStatusBarStyleDefault;

}

- (UIViewController *)childViewControllerForStatusBarStyle

{

if (需要显示为白色状态栏)

{

return self.topViewController;

}

return [super childViewControllerForStatusBarStyle];

}

这样就完美的解决了问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容