需求:App启动时状态栏是黑色样式,进入页面后是白色样式:
1.先在plist中增加属性
设置为Yes:页面会根据当前ViewController的preferredStatusBarStyle来设置状态栏的样式;No:进入APP时设置的样式,不能改变.
我使用Yes,因为我需要改变颜色.
在这里设置进入APP时状态栏的样式
或者在plist中增加
是一样的效果,当然这里的值选Default.
2.根控制器是ViewController时,只需要覆盖属性:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent //返回白色样式
}
根控制器是NavigationController时:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
override var childViewControllerForStatusBarStyle: UIViewController?{
return self.viewControllers.first
}
是TabBarController时:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
override var childViewControllerForStatusBarStyle: UIViewController?{
return return self.selectedViewController
}
同时tabBarController的viewControllers中的所有controller需要覆盖属性:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent //返回白色样式
}
当根控制的childViewControllerForStatusBarStyle属性不为空时,它所加载的控制器在显示状态栏时,都先使用childViewControllerForStatusBarStyle所返回的控制器的preferredStatusBarStyle值