轻松搞定状态栏颜色变化

iOS系统的状态栏颜色通常有白色和黑色两种,对应的就是UIStatusBarStyleLightContentUIStatusBarStyleDefault两种样式,改变状态栏的颜色就是通过设置不同的样式来实现的。

iOS为我们提供了两种设置状态栏的方式:统一设置app所有控制器的状态栏颜色和单独设置某个控制器的状态栏颜色

统一设置app所有控制器的状态栏颜色

首先,我们需要了解一下info.plist里的View Controller-based status bar appearance属性,如果将该属性设为YES,则控制器对状态栏的设置优先级最高,可以在控制器中对颜色进行单独修改,如果将该属性设为NO,则以启动图设置为准,即app内部所有控制器view上的状态栏都与启动图上的保持一致,当然我们还可以通过UIApplication来进行管理。

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

单独设置某个控制器的状态栏颜色

单独设置某个控制器的状态栏颜色首先需要将View Controller-based status bar appearance属性设为YES,然后在对应的控制器中加入如下代码:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

这里需要注意一点就是如果控制器在navigationController或tabBar中,通过自定义navigationController或tabBar重写如下方法:

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

如果随时更改状态栏颜色

有些特殊情况下,我们需要随时改变当前页面的状态栏颜色,这时就需要通过调用setNeedsStatusBarAppearanceUpdate方法,这个方法会通知系统去调用当前控制器的preferredStatusBarStyle方法,然后根据设置的方法来设置颜色。

你可能感兴趣的:(轻松搞定状态栏颜色变化)