iOS中修改狀態列StatusBar狀態和樣式的幾種方法
阿新 • • 發佈:2019-01-23
有時候我們需要把介面中的狀態列隱藏掉,或者在深背景色的時候需要把狀態列的顏色改為白色。
在iOS7之前通常使用如下方式:
UIApplication * app = [UIApplication sharedApplication];
app.statusBarHidden = YES;
app.statusBarStyle = UIStatusBarStyleLightContent;
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
先獲取UIApplication的單例。然後通過設定屬性來設定狀態列。
statusBarHidden表示是否隱藏。
statusBarStyle表示狀態列樣式。
setStatusBarHidden:withAnimation:表示用某種動畫效果來隱藏狀態列。
但是在iOS7之後,系統將狀態列交給Controller管理,如果還在程式中直接使用上述程式碼,是無效的。
可以在Controller裡面通過如下方法實現隱藏和改變樣式:
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (BOOL)prefersStatusBarHidden { return YES; }
很顯然與上面的兩個方法相比,之前的幾句程式碼更具備方便和靈活性。
如果還希望使用UIApplication控制,則需要在Info.plist裡面設定如下屬性:
View controller-based status bar appearance : NO
就是告訴系統我的狀態列不是由控制器來管理的,這樣UIApplication的呼叫就有效了。