1. 程式人生 > >iOS中修改狀態列StatusBar狀態和樣式的幾種方法

iOS中修改狀態列StatusBar狀態和樣式的幾種方法

有時候我們需要把介面中的狀態列隱藏掉,或者在深背景色的時候需要把狀態列的顏色改為白色。

在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的呼叫就有效了。