答案 0 :(得分:1)
正如一些人已经建议的那样,在您的viewController中设置:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
但是,这还不够。由于该viewController包含在UINavigationController中,因此您需要对nav控制器说基于当前显示的控制器使用状态栏样式。一种方法是通过这样扩展UINavigationController:
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
答案 1 :(得分:0)
preferredStatusBarStyle属性设置为lightContent。生成并运行项目,以查看状态栏的内容变为浅色。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
状态栏的内容再次变暗,这是默认设置。原因是,iOS要求导航控制器的状态栏样式,而不是所包含的视图控制器。
override func viewDidAppear(_ animated: Bool) {
navigationController?.navigationBar.barStyle = .black
}
答案 2 :(得分:0)
将viewWillAppear添加到您的代码中
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
statusBar.backgroundColor = UIColor.white
}
let img = UIImage()
navigationController?.navigationBar.shadowImage = img
navigationController?.navigationBar.setBackgroundImage(img, for: UIBarMetrics.default)
navigationController?.navigationBar.backgroundColor = UIColor.white
navigationController?.navigationBar.barTintColor = UIColor.white
}
答案 3 :(得分:-1)
在您的ViewController中调用它:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
此外,如果尚未完成,则应将info.plist文件中的基于控制器的视图状态栏外观属性设置为是。
答案 4 :(得分:-1)
默认情况下,我们可以在项目plist中设置“状态栏样式”,但是如果要为特定控制器定义颜色,则应在控制器类中覆盖以下方法。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
希望它会对您有所帮助:)