不知何故,无论我遇到的查询或答案数量,我找不到一个人可以说如何使用Swift 3在iOS中设置状态栏颜色。我已经看过所有的您添加的建议:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
但问题是,我不想要一个透明的状态栏。我想要一个特定的十六进制颜色作为状态栏颜色。
答案 0 :(得分:3)
以下是关于状态栏更改的Apple Guidelines/Instruction。只有黑暗&状态栏中允许亮(同时为黑色)。
以下是 - 如何更改状态栏样式:
如果要设置状态栏样式,应用程序级别,然后在`.plist'中将UIViewControllerBasedStatusBarAppearance
设置为NO
。文件。
如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:
UIViewControllerBasedStatusBarAppearance
文件中将YES
设置为.plist
。 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
根据状态栏样式设置级别设置.plist的值。
您可以在应用程序启动期间或视图控制器的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
}
}
结果如下:
答案 1 :(得分:1)
没有用于设置状态栏内容颜色的API;如果你想要一个,你应该提交一个增强请求here。如果要更改状态栏后面背后的背景颜色,请将应用背景颜色的视图放在应用程序窗口的顶部。