iOS Swift 修改狀態欄的風格。

最近在學習Swift的時候,重新梳理了一遍修改狀態欄的知識點

狀態的的修改分為兩個方法:

? ? ?1. 以UIAPPlication為準 設置?UIApplication.shared.statusBarStyle 的值來確定狀態欄的風格,UIApplication.shared.statusBarStyle 為枚舉:.default .lightContent(iOS 7.0) .darkContent(iOS 13.0) 前提是在plist.info文件中設置View controller-based status bar appearance 的值為false

? ? 2. 以控制器中重寫父類的preferredStatusBarStyle屬性的get方法為準 來設置狀態欄的風格,返回值為?UIStatusBarStyle類型的枚舉,枚舉值分別是: .default ?.lightContent(iOS 7.0) .darkContent(iOS 13.0) , 前提是在plist.info文件中設置?View controller-based status bar appearance 的值為true

以上dackContent的值為iOS13 暗黑風格新添加的屬性. 如果不需要適配暗黑屬性,可在info文件中設置?User Interface Style 的值為 Light

動態設置狀態欄的風格:

第一種方法 可以直接設置設置UIApplication.shared.statusBarStyle即可。

第二種方法,在父類變量preferredStatusBarStyle的get方法中 返回一個控制狀態欄的變量,在需要改變風格的時候 改變控制狀態欄變量的值,然后調用setNeedsStatusBarAppearanceUpdate()方法,這個方法調用之后 系統會自動再去讀取preferredStatusBarStyle變量返回的值,即可設置狀態欄的風格。

在有導航控制器中,使用preferredStatusBarStyle修改狀態欄風格

? ? 此時要注意,需要重寫NavigationController的childForStatusBarStyle和childForStatusBarHidden方法,才能夠在viewController中設置生效:

extension UINavigationController {

? ? open override var childForStatusBarStyle: UIViewController? {

? ? ? ? return viewControllers.last

? ? }

? ? open override var childForStatusBarHidden: UIViewController? {

? ? ? ? return viewControllers.last

? ? }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。