最近在學(xué)習(xí)Swift的時候馒稍,重新梳理了一遍修改狀態(tài)欄的知識點
狀態(tài)的的修改分為兩個方法:
? ? ?1. 以UIAPPlication為準 設(shè)置?UIApplication.shared.statusBarStyle 的值來確定狀態(tài)欄的風(fēng)格,UIApplication.shared.statusBarStyle 為枚舉:.default .lightContent(iOS 7.0) .darkContent(iOS 13.0) 前提是在plist.info文件中設(shè)置View controller-based status bar appearance 的值為false
? ? 2. 以控制器中重寫父類的preferredStatusBarStyle屬性的get方法為準 來設(shè)置狀態(tài)欄的風(fēng)格滥比,返回值為?UIStatusBarStyle類型的枚舉牙咏,枚舉值分別是: .default ?.lightContent(iOS 7.0) .darkContent(iOS 13.0) , 前提是在plist.info文件中設(shè)置?View controller-based status bar appearance 的值為true
以上dackContent的值為iOS13 暗黑風(fēng)格新添加的屬性. 如果不需要適配暗黑屬性臼隔,可在info文件中設(shè)置?User Interface Style 的值為 Light
動態(tài)設(shè)置狀態(tài)欄的風(fēng)格:
第一種方法 可以直接設(shè)置設(shè)置UIApplication.shared.statusBarStyle即可。
第二種方法妄壶,在父類變量preferredStatusBarStyle的get方法中 返回一個控制狀態(tài)欄的變量摔握,在需要改變風(fēng)格的時候 改變控制狀態(tài)欄變量的值,然后調(diào)用setNeedsStatusBarAppearanceUpdate()方法丁寄,這個方法調(diào)用之后 系統(tǒng)會自動再去讀取preferredStatusBarStyle變量返回的值氨淌,即可設(shè)置狀態(tài)欄的風(fēng)格。
在有導(dǎo)航控制器中伊磺,使用preferredStatusBarStyle修改狀態(tài)欄風(fēng)格
? ? 此時要注意盛正,需要重寫NavigationController的childForStatusBarStyle和childForStatusBarHidden方法,才能夠在viewController中設(shè)置生效:
extension UINavigationController {
? ? open override var childForStatusBarStyle: UIViewController? {
? ? ? ? return viewControllers.last
? ? }
? ? open override var childForStatusBarHidden: UIViewController? {
? ? ? ? return viewControllers.last
? ? }
}