ios 设置状态栏字体颜色

时间:2025-01-30 08:01:01

1、ios9.0以前设置状态栏字体颜色

///白色
 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

///黑色
 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];

会看到如下提示:

'setStatusBarStyle:' is deprecated: first deprecated in iOS 9.0 - Use -[UIViewController preferredStatusBarStyle]

注意:1、该方法在9.0后就废弃了,需要使用在preferredStatusBarStyle方法中实现
2、setStatusBarStyle设置状态栏颜色,我们需要在plist中添加
View controller-based status bar appearance —>NO
3、⚠️划重点:上面这个属性会影响 preferredStatusBarStyle的,
4、所以你在使用preferredStatusBarStyle来实现时,该值需要设置为YES,否则不生效
5、⚠️也就是说View controller-based status bar appearance 值为NO使用
setStatusBarStyle生效,为YES时preferredStatusBarStyle生效,一定要注意啦

2、iOS9.0以后使用如下方式:

- (UIStatusBarStyle)preferredStatusBarStyle {
    //1:白色  0:黑色
    if (self.vcFlag == 1) {
           return UIStatusBarStyleLightContent;
    }else {
        if (@available(iOS 13.0, *)) {
            return UIStatusBarStyleDarkContent;
        } else {
           return UIStatusBarStyleDefault;
        }
    }
}

注意:View controller-based status bar appearance 为YES

要想在页面滑动时,状态栏字体颜色会随着变黑或白色,flag我们已经添加,只要让其主动调用该方法

///会自动调用preferredStatusBarStyle方法,只要加上相关判断即可
[self setNeedsStatusBarAppearanceUpdate];