IOS 13 之后更改状态栏颜色问题(OC)

1,550 阅读1分钟

在这个版本之后要改状态栏颜色 它有一个判断状态栏高度的机制,若把状态栏高度设置为 小于 默认高度的话,设置状态栏背景颜色将无效!只有 >= 默认高度,颜色设置才有效.

-(UIStatusBarStyle)preferredStatusBarStyle {
    static UIView *statusBar;
    if (@available(iOS 13.0, *)) {
        // iOS 13  弃用keyWindow属性  从所有windowl数组中取
        CGRect rect = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame;
        statusBar = [[UIView alloc]initWithFrame:rect] ;
        [[UIApplication sharedApplication].keyWindow addSubview:statusBar];
    }else{
        dispatch_async(dispatch_get_main_queue(),^{
            statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
        });
    }
    statusBar.backgroundColor = [UIColor grayColor];
//    statusBar.alpha = 1.0f;
//        if (@available(iOS 13.0, *)) {
//            return UIStatusBarStyleDarkContent;
//        } else {
            return UIStatusBarStyleLightContent;
//        }
}