刚刚建项目的时候遇到的,记录一下。
首先:
将info.plist
中的View controller-based status bar appearance
设置为NO
。
如果没有的话,就添加一条设置为NO
。
没有设置的话,我刚试过,怎么改变status bar
都没有效果。
然后:
1、就可以按照UI效果做相应调整了。
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
UIStatusBarStyleDefault // 黑色
UIStatusBarStyleLightContent // 白色
// 目前来说基本就这两个,还有两个是7.0之前的
可以放在AppDelegate中,也可以放在BaseViewController中,看实际需求.
2、也可以在viewController中重写这个方法同样的效果
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
3、也可以在General中设置
4、或者如果只有一个页面有特殊要求的话,可以这样
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
}
5、如果没有导航条的页面,会感觉到状态栏是不透明的,下面的颜色顶不到最上面,像这样:
请相信状态栏其实是透明的,是因为高度的开始坐标是从状态栏下开始的,所以减去状态栏的高度就好了
// 高度设成-20 就好了
self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, -20, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain];
6、隐藏方法,同样也要View controller-based status bar appearance
设置为NO
[UIApplication sharedApplication].statusBarHidden = YES;
// 同样有重写方法
- (BOOL)prefersStatusBarHidden{
return YES;
}
最后
Hide status bar
勾选之后 plist中会出现:
网上说这个属性设置为YES会使启动页的状态栏隐藏掉。
但是我试了一下:
当View controller-based status bar appearance
设置为YES
时,是隐藏掉启动页的状态栏。
当View controller-based status bar appearance
设置为NO
时,所有的状态栏都隐藏掉了。