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、如果没有导航条的页面,会感觉到状态栏是不透明的,下面的颜色顶不到最上面,像这样:


iOS之状态栏设置_第1张图片

请相信状态栏其实是透明的,是因为高度的开始坐标是从状态栏下开始的,所以减去状态栏的高度就好了

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

你可能感兴趣的:(iOS之状态栏设置)