iOS 修改状态栏颜色的3种方式

  • 通过info.plist设置默认

在 Info.plist 里增加一行 UIStatusBarStyle( Status bar style 也可以),这里可以设置两个值,就是上面提到那两个 UIStatusBarStyleDefault 和 UIStatusBarStyleLightContent 。


image.png
  • 通过statusBarStyle方法来动态设置状态栏

可以使用UIApplication的statusBarStyle方法来设置状态栏,不过,首先需要停止使用View controller-based status bar appearance。在project target的Info tab中,插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO。

image.png

然后就可以使用下面的代码来设置状态栏风格了:

 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
  • 通过 preferredStatusBarStyle 这个方法来实现

自定义一个 UINavigationController 的子类,在这个子类中重写 preferredStatusBarStyle 这个方法,这样在 UIViewController 中就有效了,如下:

- (UIViewController *)childViewControllerForStatusBarStyle {
    return self.topViewController;
}

- (UIStatusBarStyle)preferredStatusBarStyle {
    return [self.topViewController preferredStatusBarStyle];
}

- (BOOL)prefersStatusBarHidden {
    return [self.topViewController prefersStatusBarHidden];
}

如要手动执行 preferredStatusBarStyle

 [self setNeedsStatusBarAppearanceUpdate];

你可能感兴趣的:(iOS 修改状态栏颜色的3种方式)