隱藏狀態(tài)欄
如果想要隱藏狀態(tài)欄枫匾,有兩種做法:
狀態(tài)欄是否隱藏默認由控制器管理哑芹,也就是說花盐,當前狀態(tài)欄所對應(yīng)的控制器決定是否隱藏狀態(tài)欄执虹。
UIViewController中提供了一個prefersStatusBarHidden方法用于查看當前的控制器顯示的狀態(tài)欄是否隱藏拓挥,默認這個方法返回的是NO,也就是不隱藏袋励。但是并沒有提供相應(yīng)的方法來設(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)在導航控制器褂傀。