iOS之状态栏设置

刚刚建项目的时候遇到的,记录一下。

首先:

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时,所有的状态栏都隐藏掉了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容