不知何故,无论我遇到的查询或答案的数量如何,我都找不到可以说出如何使用 Swift 3 在 iOS 中设置状态栏颜色的人。我已经看到了您添加的所有建议:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
但问题是,我不想要一个透明的状态栏。我想要状态栏颜色的特定十六进制颜色。
最佳答案
这里是 Apple Guidelines/Instruction关于状态栏的变化。状态栏中只允许 Dark & light (while & black)。
这是 - 如何更改状态栏样式:
如果你想设置状态栏样式,那么在你的 `.plist' 文件中将 UIViewControllerBasedStatusBarAppearance
设置为 NO
。
如果您想设置状态栏样式,请在 View Controller 级别执行以下步骤:
- 如果您只需要在 UIViewController 级别设置状态栏样式,请在
.plist
文件中将UIViewControllerBasedStatusBarAppearance
设置为YES
。 在 viewDidLoad 中添加函数 -
setNeedsStatusBarAppearanceUpdate
在您的 View Controller 中覆盖 preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
根据状态栏样式设置级别设置.plist 的值。
您可以在应用程序启动期间或 View Controller 的 viewDidLoad 期间为状态栏设置背景颜色。
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
这是结果:
关于ios - 状态栏颜色 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034003/