状态栏样式 - Swift 3 - 随时更改

Chr*_*son 3 statusbar ios swift3

我发现很难以编程方式更改状态栏样式.

我看到如何使用(在ViewController.swift中)的组合为每个ViewController静态设置它:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.default
}
Run Code Online (Sandbox Code Playgroud)

和(在info.plist中):

View controller-based status bar appearance = YES
Run Code Online (Sandbox Code Playgroud)

...

我想随时改变它!

小智 7

迅捷3

1.更改info.plist行查看基于控制器的状态栏外观并将其设置为NO

2.Change在appDelegate.swift在didFinishLaunchingWithOptions

UIApplication.shared.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)


Chr*_*son 6

经过大量的挖掘后找到了答案!

设置(在info.plist中):

View controller-based status bar appearance = NO
Run Code Online (Sandbox Code Playgroud)

并删除(在ViewController.swift中):

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.default
}
Run Code Online (Sandbox Code Playgroud)

...

现在你可以使用(在ViewController.swift中):

UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: true)
Run Code Online (Sandbox Code Playgroud)

并且,要初始为每个ViewController设置样式,请使用viewDidAppear:

override func viewDidAppear(_ animated: Bool) {
    UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: false)
}
Run Code Online (Sandbox Code Playgroud)

  • 这似乎在iOS 9中已被弃用,它说要使用UIViewController - preferredStatusBarStyle.但我无法让它发挥作用.你找到了解决方案吗? (3认同)