一、基本應用
相信基本的隐藏辦法網上很多,這裡隻簡單說明一下
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方法來強制調用隐藏狀态欄的方法即可。
問題完美解決!