2013-12-12 19 views
1

我想只需按下按鈕,狀態欄的顏色從白色到黑色的改變,編程只在一個視圖控制器如何改變PreferredStatusBarStyle編程

這是代碼:

- (UIStatusBarStyle)preferredStatusBarStyle { 
NSLog(@"PreferredStatusBarStyle"); 
if(nav_bar.alpha==1) 
{ 
    NSLog(@"->UIStatusBarStyleBlackOpaque"); 
    return UIStatusBarStyleBlackOpaque; 
} 
else 
{ 
    NSLog(@"->UIStatusBarStyleLightContent"); 
    return UIStatusBarStyleLightContent; 
}} 

然後當我按下一個按鈕的動作是:

[self setNeedsStatusBarAppearanceUpdate]; 

但這不起作用!

當我按下按鈕日誌根據navbar.alpha寫入正確的狀態,但狀態欄文本顏色保持UIStatusBarStyleBlackOpaque,就像視圖出現時一樣。

回答

0

你需要做的,是調用-setStatusBarStyle:動畫:方法直通共享的應用程序,這樣

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; 

,你可以使用它沒有動畫參數也是如此。請記住,UIStatusBarStyleBlackOpaque在iOS的7棄用,文件說,你想使用UIStatusBarStyleLightContent代替

編輯: 對不起,如果u想使用preferredStatusBarStyle,看看這個preferredStatusBarStyle isn't called

+0

[UIApplication的sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent動畫:YES]; – ikanimo

+2

這已被iOS 9棄用。其他解決方案? – IIllIIll

+0

@Arcrammer我已經回答上面的 – rdougan

5

setStatusBarStyle:animated:已被棄用。在iOS9中,您可以使用preferredStatusBarStylesetNeedsStatusBarAppearanceUpdate實現相同的目的。

在您的視圖控制器:

override func preferredStatusBarStyle() -> UIStatusBarStyle { 
    if (condition) { 
     return .LightContent 
    } 

    return .Default 
} 

然後當你的病情變化:

self.setNeedsStatusBarAppearanceUpdate()