分類
Swift

iOS 正確設置 status bar style 顏色

在開發 iOS App 時,很多應用都要根據當前 App 內容顏色來設置 iOS 系統狀態欄 的配色,黑色或者白色——尤其是在 iOS 13 系統支持了黑色模式後。

平時,別人會告訴你這麼做:

但這會觸發警告: 不推薦使用 iOS版 9 。那麼有沒有其他辦法呢?有,官方推薦的寫法是這樣的:

這個要在你的 ViewController 裡才可以……但你絕望地發現,它根本沒有被調用。

於是你繼續搜索……

在你的 信息.plist中 裡, 視圖 控制者-基於 狀態 酒吧 出現 必須設置為 YES ,否則就只能在 Xcode 的 target 中設置狀態欄的黑白配色。

但是…… preferredStatusBarStyle 依舊沒有被調用。

這到底是怎麼回事?

這實際上是由於 UINavigationController 導致的,由於它通常是 ViewController 裡的最高層級,它不會將 preferredStatusBarStyle 請求向下傳遞,相反,它會根據自身的 UINavigationBar.barStyle 屬性來決定係統狀態欄到底是黑色還是白色,如果 barStyle.黑色 ,那麼系統欄就是 .lightContent 也就是白色;但如果 barStyle.默認 ,那麼系統欄就也是默認的黑色了。

所以,如果你想改變系統欄顏色,在 UINavigationController 下的 ViewController 就需要修改 UINavigationBar.barStyle 而不是重寫 preferredStatusBarStyle

另外

如果你是在 iOS 13 以上版本的 iOS 中這麼做,你會發現系統狀態欄還是不變……所以你可能需要在你的 信息.plist中 裡加上 UIUserInterfaceStyle 字段,並設置值為 ,這樣可以讓你的 App 不配適 iOS 13 的黑色模式——因為如果配適了的話,在黑色模式下,你的系統狀態欄將永遠是白色,不會變色……

參考文獻

本文由 落格博客 原創撰寫:落格博客 » iOS 正確設置 status bar style 顏色

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3343.html

通過 落格博客

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

發表評論

您的電子郵件地址不會被公開. 必填字段標 *