一、基本應用
相信基本的隱藏辦法網上很多,這里只簡單說明一下
1⃣️改變全局狀態欄
1.在項目的Info.plist文件里設置UIViewControllerBasedStatusBarAppearance為NO。即更改為StatusBar的狀態不隨UIViewController的不同而不同
2.[[UIApplication sharedApplication]setStatusBarHidden:YES];
2⃣️交由控制器管理
1.在項目的Info.plist文件里設置UIViewControllerBasedStatusBarAppearance為YES
2.在控制器中實現下面的方法
- (BOOL)prefersStatusBarHidden { return YES; }
二、出現的問題
我當時出現的問題是上述方法的2⃣️無法隱藏我想要隱藏的那個控制器的狀態欄,苦尋很久,終於在一次吃飯當時,想通可能問題出在什么地方了
單獨設置的viewController必須為最高級別的viewController,(every top-level view controller in your app (other than a standard UIKit container view controller) )中調用,這是蘋果官方告訴我們的。但是什么是最高級呢?
其實就是:我們的控制器不能是被包含在其他的控制器中的(導航控制器的話需要是根控制器),我的項目因為框架使用了SWRevealViewController。所以如果我想在里面隱藏某個控制器的狀態欄,就必須隱藏在view即將出現的時候,隱藏這個控制器的狀態欄,在view即將消失的時候,再使它出現。
之后我給這個框架增加了一個BOOL屬性,再調用setNeedsStatusBarAppearanceUpdate方法來強制調用隱藏狀態欄的方法即可。
問題完美解決!