背景介绍:
有的项目要求在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更改状态栏、导航栏颜色的几种办法连接