首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试更改UIStatusBar淡色

尝试更改UIStatusBar淡色
EN

Stack Overflow用户
提问于 2018-11-24 11:04:33
回答 3查看 141关注 0票数 2

我试图在特定的UIStatusBar中更改UIViewController的色调。

这里是我的代码:

代码语言:javascript
复制
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    self.setNeedsStatusBarAppearanceUpdate()

}

什么都没发生。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-24 12:28:42

在UINavigationController上,preferredStatusBarStyle不被调用,因为它的topViewController比self更好。因此,要让preferredStatusBarStyle调用UINavigationController,您需要更改它的childViewControllerForStatusBarStyle。

要为一个UINavigationController执行此操作:

代码语言:javascript
复制
class MyRootNavigationController: UINavigationController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    override var childViewControllerForStatusBarStyle: UIViewController? {
        return nil
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-11-24 12:32:09

您可以向UINavigationController添加一个扩展

代码语言:javascript
复制
extension UINavigationController {
    open override var childForStatusBarStyle: UIViewController? {
        return visibleViewController
    }
}

然后,对于您想要的轻量级状态栏(白色时间、图标等)的视图控制器,然后重写preferredStatusBarStyle

代码语言:javascript
复制
override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

对于一个黑暗的状态酒吧,你什么都不用做。

票数 0
EN

Stack Overflow用户

发布于 2018-12-07 07:09:34

您可能需要在info.plist中添加“基于视图控制器的状态栏外观”,其值为"YES“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53457475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档