美文网首页
prefersStatusBarHidden失效不起作用

prefersStatusBarHidden失效不起作用

作者: ONE2 | 来源:发表于2021-06-07 14:55 被阅读0次

    1.在 info.plist中添加

    View controller-based status bar appearance : YES
    

    2.新建一个继承于UINavigationController的子类,并实现如下方法

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

    3.在需要隐藏statusBar的ViewController中实现方法

        override var prefersStatusBarHidden: Bool {
            return true
        }
    

    关于为什么要重写childForStatusBarHidden和childForStatusBarStyle两个属性:

    这两个属性默认返回值为nil。

    当调用setNeedsStatusBarAppearanceUpdate的时候,系统会调用Container(容器控制器)的preferredStatusBarStyle这个方法(window?.rootViewController的preferred的方法,一般我们用UINavigationController或者UITabBarController来做Container),也就是根本不会调用子控制器(我们所看到的UIViewcontroller)的preferredStatusBarStyle方法。

    重写了childForStatusBarHidden和childForStatusBarStyle后,这两个属性返回的都是当前展示的controller,则调用的statusBarStyle就是当前controller重写的preferredStatusBarStyle了。

    参考链接:
    https://zhengry.github.io/2018/10/10/Swift-4.2%E5%A1%AB%E5%9D%91%E4%B9%8BStatusBarStyle%E8%AE%BE%E7%BD%AE/

    相关文章

      网友评论

          本文标题:prefersStatusBarHidden失效不起作用

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