状态栏样式 - Swift 3 - 随时更改
Status Bar Style - Swift 3 - change at any time
我发现很难以编程方式更改状态栏样式。
我了解如何使用(在 ViewController.swift 中)的组合为每个 ViewController 静态设置它:
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.default
}
和(在info.plist):
View controller-based status bar appearance = YES
...
我想随时更改它!
经过大量挖掘找到了答案!
设置(在info.plist):
View controller-based status bar appearance = NO
并删除(在ViewController.swift):
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.default
}
...
现在您可以使用(在ViewController.swift):
UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: true)
并且,要为每个 ViewController 初始设置样式,请使用 viewDidAppear:
override func viewDidAppear(_ animated: Bool) {
UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: false)
}
swift 3
1.Change in info.plist 行View controller-based status bar appearance 并设置为NO
2.Change 在 appDelegate.swift 在 didFinishLaunchingWithOptions
UIApplication.shared.statusBarStyle = .lightContent
将状态栏样式存储为视图控制器中的 属性:
var statusBarStyle: UIStatusBarStyle = .default
然后在同一个视图控制器中实现preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle
}
然后,当您更改 statusBarStyle
时,请务必同时调用 setNeedsStatusBarAppearanceUpdate
。 preferredStatusBarStyle
方法在视图 appears/disappears 时自动调用,但是如果在视图可见时更改状态栏样式,则必须告诉视图控制器状态栏外观需要更新。
请注意,您仍然需要对 plist 进行更改,如果您的视图控制器位于导航控制器中,您可能需要在那里处理状态栏更改(通过 UINavigationController
子类,对于例如)。
UIApplication.shared.setStatusBarStyle(…)
在 iOS 9.0 中已弃用,所以不要使用它。
我发现很难以编程方式更改状态栏样式。
我了解如何使用(在 ViewController.swift 中)的组合为每个 ViewController 静态设置它:
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.default
}
和(在info.plist):
View controller-based status bar appearance = YES
...
我想随时更改它!
经过大量挖掘找到了答案!
设置(在info.plist):
View controller-based status bar appearance = NO
并删除(在ViewController.swift):
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.default
}
...
现在您可以使用(在ViewController.swift):
UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: true)
并且,要为每个 ViewController 初始设置样式,请使用 viewDidAppear:
override func viewDidAppear(_ animated: Bool) {
UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: false)
}
swift 3
1.Change in info.plist 行View controller-based status bar appearance 并设置为NO
2.Change 在 appDelegate.swift 在 didFinishLaunchingWithOptions
UIApplication.shared.statusBarStyle = .lightContent
将状态栏样式存储为视图控制器中的 属性:
var statusBarStyle: UIStatusBarStyle = .default
然后在同一个视图控制器中实现preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle
}
然后,当您更改 statusBarStyle
时,请务必同时调用 setNeedsStatusBarAppearanceUpdate
。 preferredStatusBarStyle
方法在视图 appears/disappears 时自动调用,但是如果在视图可见时更改状态栏样式,则必须告诉视图控制器状态栏外观需要更新。
请注意,您仍然需要对 plist 进行更改,如果您的视图控制器位于导航控制器中,您可能需要在那里处理状态栏更改(通过 UINavigationController
子类,对于例如)。
UIApplication.shared.setStatusBarStyle(…)
在 iOS 9.0 中已弃用,所以不要使用它。