Swift 5.2 设置状态栏 preferredStatusBarStyle 无效解决方案

1、 在ViewController中 重写属性preferredStatusBarStyle 无效

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
}

解决方案:
在重写的导航控制器(BaseNavigationController)页面重写以下两个方法即可

// 重写这两个方法 修复 控制 preferredStatusBarStyle 方法无效
override var childForStatusBarHidden: UIViewController? {
    return self.topViewController 
}

override var childForStatusBarStyle: UIViewController? {
    return self.topViewController
}

2 、滑动窗口动态改变状态栏preferredStatusBarStyle时间、信号等颜色

/// 全局定义一个  变量控制导航
var alpha: CGFloat = 0.0
override var preferredStatusBarStyle: UIStatusBarStyle {
    if alpha == 1 {
       return .default
    }
    return .lightContent
}

// 在滑动时候计算位置偏移量
func scrollViewDidScroll(_ scrollView: UIScrollView) {
/// 此处省略部分代码,只说实现
    if scrollView.contentOffset.y > CGFloat(100) {
         alpha = 1
    } else {
         alpha = 0
    }
   // 下面这个方法千万不要忘记
   setNeedsStatusBarAppearanceUpdate()
}

你可能感兴趣的:(Swift 5.2 设置状态栏 preferredStatusBarStyle 无效解决方案)