为什么我的状态栏不会改变首选风格?

时间:2017-01-31 03:26:13

标签: ios swift swift3 statusbar

我在View controller-based status bar appearance文件中将YES设置为Info.plist

视图控制器不在导航堆栈中,通过模态segue呈现。在其中,我对Swift 3 / iOS 10具有以下属性覆盖:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

仍然,状态栏保留其默认(深色)样式。但是,当我在preferredStatusBarStyle中打印viewDidLoad时,我得到rawValue 1。签出documentation1是指.lightContent

我正在尝试将状态栏的样式更改为.lightContent,因为该视图包含UIVisualEffectViewUIBlurEffectStyle值为dark

我做错了什么?

4 个答案:

答案 0 :(得分:4)

在matt answer的帮助下,我能够解决我的问题。我必须在viewDidLoad中使用以下内容:

modalPresentationCapturesStatusBarAppearance = true

当我尝试使用matt的解决方案时,我收到了两个编译错误:Cannot override mutable property with read-only property 'modalPresentationCapturesStatusBarAppearance'Getter for 'modalPresentationCapturesStatusBarAppearance' with Objective-C selector 'modalPresentationCapturesStatusBarAppearance' conflicts with getter for 'modalPresentationCapturesStatusBarAppearance' from superclass 'UIViewController' with the same Objective-C selector

答案 1 :(得分:2)

将其添加到模态显示的视图控制器:

find_package(ZeroMQ REQUIRED)

答案 2 :(得分:0)

  1. 转到info.plist并将 UIViewControllerBasedStatusBarAppearance 设置为 false
  2. 转到 AppDelegate.swift ,然后转到功能 didFinishLaunchingWithOptions ,设置您想要的颜色,如下所示:

    UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

  3. 请告诉我它是否可以帮助您。 感谢。

答案 3 :(得分:-2)

解决方法:

View controller-based status bar appearance更改为否

self.setStatusBarStyle(.lightContent)
self.setNeedsStatusBarAppearanceUpdate()