天天看點

ios 去掉底部狀态欄_iOS開發之狀态欄隐藏(問題篇)

一、基本應用

相信基本的隐藏辦法網上很多,這裡隻簡單說明一下

1⃣️改變全局狀态欄

1.在項目的Info.plist檔案裡設定UIViewControllerBasedStatusBarAppearance為NO。即更改為StatusBar的狀态不随UIViewController的不同而不同

2.[[UIApplication sharedApplication]setStatusBarHidden:YES];

2⃣️交由控制器管理

1.在項目的Info.plist檔案裡設定UIViewControllerBasedStatusBarAppearance為YES

2.在控制器中實作下面的方法

-(BOOL)prefersStatusBarHidden

{returnYES;

}

二、出現的問題

我當時出現的問題是上述方法的2⃣️無法隐藏我想要隐藏的那個控制器的狀态欄,苦尋很久,終于在一次吃飯當時,想通可能問題出在什麼地方了

單獨設定的viewController必須為最進階别的viewController,(every top-level view controller in your app (other than a standard UIKit container view controller) )中調用,這是蘋果官方告訴我們的。但是什麼是最進階呢?

其實就是:我們的控制器不能是被包含在其他的控制器中的(導航控制器的話需要是根控制器),我的項目因為架構使用了SWRevealViewController。是以如果我想在裡面隐藏某個控制器的狀态欄,就必須隐藏在view即将出現的時候,隐藏這個控制器的狀态欄,在view即将消失的時候,再使它出現。

之後我給這個架構增加了一個BOOL屬性,再調用setNeedsStatusBarAppearanceUpdate方法來強制調用隐藏狀态欄的方法即可。

問題完美解決!