一 全局修改 不更改info.plist
- 这么去改
但是这么改的话全局都会变的 如果你想要在某一个特定的控制器里面改变的话 需要在控制器声明周期里面写
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
- 在控制器里面改
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
当然一般我们不这么干,为什么?因为这么写的话容易出问题而且代码不易维护,然后看下面的方法
二 在当前控制器里面改
- 在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppearance为YES
- 在所要改状态的控制器的导航栏控制器里面加上下面代码
- (UIViewController *)childViewControllerForStatusBarStyle
{
return self.topViewController;
}
然后在控制器里面写下如下代码 就可以达到只改当前控制器的UIStatusBarStyle了
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}