preferredStatusBarStyle var在iOS12中不起作用?

问题描述 投票:4回答:2

添加

application.statusBarStyle = .lightContent

到我的AppDelegate的didFinishLaunchingWithOptions方法也没有添加

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

VC不再适用于iOS 12 / Xcode 10

有任何想法吗?

xcode10 ios12
2个回答
13
投票

如果为每个View Controller选择相同的状态栏颜色:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

将此信息发送到您的Info.plist,并按照所需颜色从项目 - >目标 - >状态栏样式设置状态栏颜色。

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

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

将此信息发送到您的Info.plist。然后,为NavigationController创建一个自定义类。之后,您可以实现该方法:

class LightContentNavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

而已!请告诉我这是否有用!


22
投票

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

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

令人惊讶的是,这是由导航栏的barStyle决定的。要获得光状态栏文本,请说(在视图控制器中):

self.navigationController?.navigationBar.barStyle = .black

很难相信,但却是如此。多年前我直接从Apple获得了这些信息。

您还可以在故事板中执行此设置。

例!导航栏的酒吧风格是.default

enter image description here

导航栏的酒吧风格是.black

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.