首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preferredStatusBarStyle var不是在iOS12工作吗?

preferredStatusBarStyle var不是在iOS12工作吗?
EN

Stack Overflow用户
提问于 2018-09-22 02:26:15
回答 7查看 19.3K关注 0票数 28

添加

代码语言:javascript
复制
application.statusBarStyle = .lightContent

到我的AppDelegate的didFinishLaunchingWithOptions方法中,也不添加

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

不再在iOS12 12/Xcode10 10上工作。

有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-09-22 14:18:49

这与iOS 12无关,你只是规则错了。

在导航控制器的情况下,状态栏的颜色不是由视图控制器的preferredStatusBarStyle决定的。

令人惊讶的是,它是由导航栏的barStyle确定的。要获得轻量级状态栏文本,例如(在您的视图控制器中):

代码语言:javascript
复制
self.navigationController?.navigationBar.barStyle = .black

很难相信,但是真的。几年前,我直接从苹果那里得到了这个信息。

还可以在情节提要中执行此设置。

举个例子!导航栏的条形样式是.default

导航栏的条形样式是.black

注意:对于iOS 13,只要您不使用大标题或UIBarAppearance,这在iOS 13中仍然有效。但基本上,您应该停止这样做,让状态栏的颜色是自动的,因为用户选择的光或暗模式。

票数 120
EN

Stack Overflow用户

发布于 2018-09-22 13:15:37

如果为每个视图控制器选择相同的状态栏颜色:

代码语言:javascript
复制
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

广告到您的Info.plist,并设置状态栏颜色从项目->目标->状态栏样式所需的颜色。

另一方面,在您的示例中,您有一个嵌入在视图控制器中的导航控制器。因此,您希望为每个页面设置不同的状态栏颜色。

代码语言:javascript
复制
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

把这个贴到你的Info.plist上。然后,为您的NavigationController创建一个自定义类。之后,您可以实现该方法:

代码语言:javascript
复制
class LightContentNavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

就这样!请告诉我这是否有用!

票数 34
EN

Stack Overflow用户

发布于 2021-05-26 16:40:38

如果Matt的答案不适用于您,请在显示viewController之前尝试添加这一行代码。

viewController = modalPresentationCapturesStatusBarAppearance = true

我遇到了一个错误,将modalPresentationStyle设置为overFullScreen不能将状态栏控件提供给呈现的视图控制器或导航控制器。

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

https://stackoverflow.com/questions/52452979

复制
相关文章

相似问题

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