iOS狀態(tài)欄隱藏及顯示問題終極解決方案

在iOS開發(fā)中,我們難免可能會遇到操作狀態(tài)欄的情況,最近抽點(diǎn)時(shí)間研究了下。其中包括:狀態(tài)欄的隱藏及顯示狀態(tài)欄的顏色,屏幕旋轉(zhuǎn)時(shí)狀態(tài)欄的適配

方案總結(jié)

  • Info.plistStatus bar is initially hidden

  • Info.plistView controller-based status bar appearance

  • 使用代碼全局設(shè)置

@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
  • 使用代碼單獨(dú)控制器設(shè)置
(BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO

感覺各種方法特別亂,有一些可能是歷史原因,如:UIApplication 全局設(shè)置的方法在iOS 9后已經(jīng)不推薦使用。

操作方式

這里暫把代碼全局設(shè)置的方式忽略不計(jì)。

  1. 啟動界面的狀態(tài)欄隱藏及顯示(沒有添加默認(rèn)是 顯示)
    Status bar is initially hidden YES隱藏 NO顯示

  2. App界面狀態(tài)欄隱藏及顯示(沒有添加默認(rèn)是顯示)
    View controller-based status bar appearance 的設(shè)置必須在 Status bar is initially hiddenYES
    YES顯示 NO隱藏

  3. 在當(dāng)個界面對狀態(tài)欄隱藏及顯示(沒有添加默認(rèn)是 顯示)
    重寫此方法,返回 YES隱藏 NO顯示

- (BOOL)prefersStatusBarHidden {
return YES;
}

必須保證View controller-based status bar appearance 置為YES的情況下

感覺好??,果斷把各種情況列出來一一揭破。

情況分類和Demo

啟動界面顯示狀態(tài)欄 + 全部界面顯示狀態(tài)欄

不做任何操作,默認(rèn)即可 Demo

啟動界面顯示狀態(tài)欄 + 全部界面隱藏狀態(tài)欄

在Info.plist 加 View controller-based status bar appearance 設(shè)YES

全部控制器重寫prefersStatusBarHidden 返回YES Demo

啟動界面顯示狀態(tài)欄 + 界面自定義狀態(tài)欄的顯示和隱藏

在Info.plist 加 View controller-based status bar appearance 設(shè)YES

在需要隱藏的控制器重寫prefersStatusBarHidden 返回YES

在需要顯示的控制器重寫prefersStatusBarHidden 返回NO(或者不重寫)Demo

啟動界面隱藏狀態(tài)欄 + 全部界面顯示狀態(tài)欄

在Info.plist 加 Status bar is initially hidden 設(shè)YES Demo

啟動界面隱藏狀態(tài)欄 + 全部界面隱藏狀態(tài)欄

在Info.plist 加 Status bar is initially hidden 設(shè)YES

在Info.plist 加 View controller-based status bar appearance 設(shè) NODemo

啟動界面隱藏狀態(tài)欄 + 界面自定義狀態(tài)欄的顯示和隱藏

在Info.plist 加 Status bar is initially hidden 設(shè)YES

在Info.plist 加 View controller-based status bar appearance 設(shè)YES(或者不加)

在需要隱藏的控制器重寫prefersStatusBarHidden 返回YES

在需要顯示的控制器重寫prefersStatusBarHidden 返回NO(或者不重寫)
Demo

聲明

感謝收看,有任何疑問和建議可在下方留言,歡迎Github點(diǎn)Star??,本文發(fā)布于梁大紅的技術(shù)Blog,轉(zhuǎn)載注明出處即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容