美文网首页
StatusBarStyle到底该如何设置呢?状态栏随心所欲的改

StatusBarStyle到底该如何设置呢?状态栏随心所欲的改

作者: super大太阳 | 来源:发表于2019-04-24 14:40 被阅读0次

    状态栏字体颜色

    public enum UIStatusBarStyle : Int {
        case `default` // Dark content, for use on light backgrounds 黑色
        @available(iOS 7.0, *)
        case lightContent // Light content, for use on dark backgrounds 白色
    }
    

    iOS9之前

    info.plistView controller-based status bar appearance = NO

    当使用这种设置时改变状态栏只有一种方法

    UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent 
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
    

    如果单个页面需要改变颜色可以在viewWillAppearviewWillDisappear中改变

    iOS9之后

    info.plistView controller-based status bar appearance = YES (此时UIApplication.shared.statusBarStyle无效)

    override var preferredStatusBarStyle: UIStatusBarStyle {
            return .lightContent
        }
    override func viewDidLoad() {
            super.viewDidLoad()
            self.setNeedsStatusBarAppearanceUpdate()
    }
    

    当baseVC不是UIViewController而是UINavigationController时可以写一个BaseNavigationController然后重写

     override var preferredStatusBarStyle: UIStatusBarStyle {
            let topVC = self.topViewController
            return topVC?.preferredStatusBarStyle ?? .default
        }
    

    这么做的原因是因为self.setNeedsStatusBarAppearanceUpdate()这个方法只调用了UINavigationController的
    preferredStatusBarStyle而没有调用UIViewController的preferredStatusBarStyle上面的方法可以穿透这个设置从而改变状态栏颜色

    当然也可以直接设置当前UINavigationController.navigationBar.barStyle的状态来改变状态栏颜色

    相关文章

      网友评论

          本文标题:StatusBarStyle到底该如何设置呢?状态栏随心所欲的改

          本文链接:https://www.haomeiwen.com/subject/yqhggqtx.html