您的位置:首页 > 移动开发 > IOS开发

iOS导航栏隐藏的情况下设置状态栏颜色

2017-03-08 11:30 441 查看
背景介绍:

有的项目要求在tabbat管理的控制器内,有个界面是H5界面,一般H5界面有自己的导航栏,所以在切换到当前H5界面的时候,需要隐藏native(iOS端)的导航栏。

导航栏隐藏方式:

- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.delegate = self;
}
#pragma mark - UINavigationControllerDelegate
// 将要显示控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断要显示的控制器是否是自己
BOOL isShowHomePage = [viewController isKindOfClass:[self class]];

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

这是个很好的设置导航栏隐藏的方式,但是当你兴冲冲的以为完美解决问题的时候,新的问题就来了,你会发现状态栏不见了,导航栏的位置是20高度的白色,很难看。其实状态栏还是有的,只不过状态栏的背景颜色没有了,这个时候需要给状态栏一个背景颜色,而我用的方式就是给状态栏的位置增加一个view。

//设置状态栏颜色
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 20)];
statusBarView.backgroundColor = [UIColor blackColor];
[self.view addSubview:statusBarView];

//加载webview,frame的H要给20,因为有状态栏。
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, SCREEN_WIDTH, SCREEN_HEIGHT-20)];

这样问题就完美解决了。
iOS更改状态栏、导航栏颜色的几种办法连接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息