我StoryBoard
的项目中有 2 个,ViewController
第一个storyBoard
中的.lightContent
statusBarStyle
所有都是.ViewController
storyBoard
.default
statusBarStyle
为此,我已经完成了以下步骤。
1.View controller-based status bar appearance
是true
2 已经使用下面的代码。
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
当我storyBoard
ViewController
从第一个storyBoard
statusBar 样式更改中将 2nd 设置为 rootController 但我面临以下问题。
当我将第一个故事板设置ViewController
为 rootController 时,状态栏样式会在几秒钟后更新。
不合适
几秒钟后
这是我的演示链接:https ://www.dropbox.com/s/ijqg73zm1jxbokc/statusBarDemo.zip?dl=0
更新
我的第一个 ViewController 代码
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .default
}
@IBAction func btnInitialControllerTapped(_ sender: Any) {
let controller = UIStoryboard(name: "Initial", bundle: nil).instantiateViewController(withIdentifier: "InitialViewController") as! InitialViewController
let navController = UINavigationController.init(rootViewController: controller)
appDelegate.window?.rootViewController = navController
}
我的第二个 ViewController 代码
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
@IBAction func btnControllerTapped(_ sender: Any) {
let storyboard = UIStoryboard(name:"Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
let navigationController = UINavigationController(rootViewController: vc)
appDelegate.window?.rootViewController = navigationController
}
请指导我缺少什么或我错误地实施了什么。任何帮助将不胜感激。谢谢