2017-06-29 144 views
1

我有一個應用程序,它隱藏/顯示狀態欄並在運行中切換其風格非常重要。以前,通過以下調用很容易:運行時隱藏/顯示狀態欄iOS 9+

[[UIApplication sharedApplication] setStatusBarHidden:NO]; 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

但是他們已被棄用,我不太瞭解新方法的工作原理。我能夠通過添加以下行的plist設置的風格和初始可見性:

View controller-based status bar appearance = YES 

,然後添加下面的方法來我的視圖控制器:

- (UIStatusBarStyle)preferredStatusBarStyle 
{ 
    return UIStatusBarStyleDefault; 
} 

- (BOOL)prefersStatusBarHidden 
{ 
    return NO; 
} 

也能正常工作的看法控制器作爲一個整體(作爲靜態設置,在視圖初始化時被調用),但我無法即時更改它們,這正是我所需要的。

我怎麼能做到這一點?

回答

1

我討厭回答我自己的問題,但在做了一些挖掘之後,我發現如何手動調用方法。首先,我創建了一個BOOL變量,可以隨時切換,然後在prefersStatusBarHidden方法中返回。

- (BOOL)prefersStatusBarHidden 
{ 
    return isStatusBarHidden; 
} 

然後,每當我想隱藏/顯示狀態欄,我改變isStatusBarHidden的價值,並迫使以檢查其居留制棒需要像這樣被更新:

isStatusBarHidden = NO; 
[self setNeedsStatusBarAppearanceUpdate]; 

適用於運行iOS9及更高版本的設備。