需求:App啟動(dòng)時(shí)狀態(tài)欄是黑色樣式,進(jìn)入頁面后是白色樣式:
1.先在plist中增加屬性
image
設(shè)置為Yes:頁面會(huì)根據(jù)當(dāng)前ViewController的preferredStatusBarStyle來設(shè)置狀態(tài)欄的樣式;No:進(jìn)入APP時(shí)設(shè)置的樣式,不能改變.
我使用Yes,因?yàn)槲倚枰淖冾伾?

image.png
在這里設(shè)置進(jìn)入APP時(shí)狀態(tài)欄的樣式
或者在plist中增加

image.png
是一樣的效果,當(dāng)然這里的值選Default.
2.根控制器是ViewController時(shí),只需要覆蓋屬性:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent //返回白色樣式
}
根控制器是NavigationController時(shí):
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
override var childViewControllerForStatusBarStyle: UIViewController?{
return self.viewControllers.first
}
是TabBarController時(shí):
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
override var childViewControllerForStatusBarStyle: UIViewController?{
return return self.selectedViewController
}
同時(shí)tabBarController的viewControllers中的所有controller需要覆蓋屬性:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent //返回白色樣式
}
當(dāng)根控制的childViewControllerForStatusBarStyle屬性不為空時(shí),它所加載的控制器在顯示狀態(tài)欄時(shí),都先使用childViewControllerForStatusBarStyle所返回的控制器的preferredStatusBarStyle值