参考的信息
stackoverflow 上的讨论 [Changing the Status Bar Color for specific ViewControllers using Swift in iOS8](stackoverflow.com/questions/2… ](stackoverflow.com/questions/2…)
通过查阅和测试发现 我所遇到情况为 navitaioncontroller push 一个新的 viewcontroller 原来的 statusBarStyle 为 .blackContent 新的 viewcontroller 要更改为 .lightContent
需要 更改 navigationController 的 statusBarStyle才能准确可行的更高顶部状态栏颜色
通过 动态获取 最后 push 的 viewcontroller 的设置可以比较方便的处理
具体是 在 navigationController 重写 preferredStatusBarStyle属性
override var preferredStatusBarStyle: UIStatusBarStyle {
if let topVC = viewControllers.last {
// return the status property of each VC, look at step 2
return topVC.preferredStatusBarStyle
}
return .default
}
然后只需要在 最后 push 的那个 viewcontroller 中重写 preferredStatusBarStyle属性
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
这样 可以控制每一个 push 的 viewcontroller 的顶部状态栏样式了