美文网首页
iOS状态栏中的坑

iOS状态栏中的坑

作者: lanmoyingsheng | 来源:发表于2019-02-02 02:09 被阅读2次

    设置状态栏样式的一般有两种方式。
    info.plist中有View controller-based status bar appearance字段,翻译为基于视图控制器的状态栏样式。

    一、设置View controller-based status bar appearance为YES。
    即在控制器中配置状态栏的的样式。例如:

    override func prefersStatusBarHidden() -> Bool {
        return true/false
    }
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent/.default
    }
    

    二、设置View controller-based status bar appearance为NO。
    即需要直接配置状态栏样式。例如:

    UIApplication.shared.statusBarStyle = .lightContent/.default
    UIApplication.shared.isStatusBarHidden = true/false
    

    个人认为第二种方法,可以在任意地方调用,较为灵活,使用更多。

    第一种方式可能是第二种的变种,因为在第一种方式中,完全可以把一个变量作为返回值,在需要时,修改这个返回值,并调用setNeedsStatusBarAppearanceUpdate刷新。

    func action() {
        _barHidden = false
        _barStyle = .lightContent
        setNeedsStatusBarAppearanceUpdate() // 通知系统做一个标记,在下一次runloop循环中需要修改状态栏样式。
    }
    
    override func prefersStatusBarHidden() -> Bool {
        return _barHidden
    }
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return _barStyle
    }
    

    我觉得这种还不如直接第二种方式,直接修改状态栏样式。

    相关文章

      网友评论

          本文标题:iOS状态栏中的坑

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