隱藏狀態(tài)欄

隱藏狀態(tài)欄


如果想要隱藏狀態(tài)欄,有兩種做法:

狀態(tài)欄是否隱藏默認由控制器管理,也就是說,當前狀態(tài)欄所對應的控制器決定是否隱藏狀態(tài)欄。

UIViewController中提供了一個prefersStatusBarHidden方法用于查看當前的控制器顯示的狀態(tài)欄是否隱藏,默認這個方法返回的是NO,也就是不隱藏。但是并沒有提供相應的方法來設(shè)置隱藏狀態(tài)欄。

這種情況我們可以重寫prefersStatusBarHidden方法,通過修改它的返回值達到目的。

這樣狀態(tài)欄就可以隱藏了。

另一種做法是不讓控制器來決定是否隱藏狀態(tài)欄,而是讓[UIApplication sharedApplication]來決定。

運行程序發(fā)現(xiàn)狀態(tài)欄并沒有隱藏。查看文檔可以發(fā)現(xiàn):

Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.

意思是如果使用默認的控制器管理狀態(tài)欄(第一種做法提到的),那么設(shè)置statusBarHidden是沒有效果的。想要關(guān)閉控制器的管理,需要我們給Info.plist增加一個key:

并且設(shè)置為NO,這樣就可以通過設(shè)置statusBarHidden來隱藏狀態(tài)欄了。(這個key是Info.plist添加Key出現(xiàn)的下拉欄里的最后一個)

當控制器管理狀態(tài)欄時

這兩個方法可以將狀態(tài)欄的控制權(quán)交給子控制器管理,如果返回nil則表示控制器自己來管理狀態(tài)欄;如果返回子控制器,則表示子控制器來管理狀態(tài)欄。比如在navigation controller中實現(xiàn)prefersStatusBarHidden方法可能并不管用,因為它可能默認在childViewControllerForStatusBarHidden中返回的是導航棧頂控制器,此時狀態(tài)欄由棧頂控制器來決定。如果想讓navigation controller來決定,那么可以在類中按下面的方式實現(xiàn):

此時,狀態(tài)欄的管理權(quán)在導航控制器。

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

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

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