iOS --- 设置状态栏颜色(全局或局部设置颜色)

转自:https://www.jianshu.com/p/63fce6d3705e

 

1.在info.plist中添加View controller-based status bar appearance,值为NO

2.在设置状态栏的地方添加代码

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

 

 

 

  • iOS 9后[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;的方式已经被苹果公司给淘汰,再次使用时会发生警告,再者该方法仅仅使用与某一控制器的状态栏。
  • 对于多控制器的应用来说一个个页面设置太麻烦,所以我选择了一种非常简洁的方法,只需修改两处配置,更改全局状态栏颜色。
  • PS:该方法有局限性,只能修改为白色或者黑色。

第一步,修改Info.plist文件:

  • 工程的Info.plist文件中默认是没有View controller-based status..这一项的,需要手动添加;
  • 添加后修改其vlaue值为NO

 

第二步,修改工程默认的状态栏样式:

  • 默认(default)为黑色
  • (第一种方式)light 为白色

     

    -(第二种方式)或者再AppDelegate.m中设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 添加如下代码,改方法在iOS9之后被废弃,建议在控制器中重写`[UIViewController preferredStatusBarStyle]`方法。后面会介绍
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    return YES;
}

在各自控制器中设置状态栏颜色(局部修改)

1.首先还是的设置plist文件

  • 如下图确保View controller-based status bar appearance该项为YES

    如下图确保View controller-based status bar appearance该项为YES

2.在控制器中重写- (UIStatusBarStyle)preferredStatusBarStyle方法:

- (UIStatusBarStyle)preferredStatusBarStyle {
    // 返回你所需要的状态栏样式
    return UIStatusBarStyleLightContent;
}

简单吧,如果需要自定义颜色好像可以定义同意的navigationBar。