美文网首页
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