2014-05-07 73 views
3

直接添加到NavigationController的任何ViewController都有一個灰色的狀態欄,它與NavigationBar的顏色相匹配。iOS 7 - 模態變化的狀態欄顏色?

但是每當我顯示一個模態時,狀態欄都是白色的,這與我放置在那裏的NavigationBar不匹配?

我在這裏看到了很多答案,其中大多數都不起作用,而那些看起來並不是很好的解決方案。例如,我不想在UINavigationController中包裝每一個模態。

我試過以下這也是建議完全擺脫我的狀態欄,這不是我想要的。

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

那麼這裏有什麼神奇的解決方案?

+0

有沒有根本就沒有一個解決方案?自從你問了一段時間,而且沒有被接受的答案? – elsurudo

+0

@elsurudo「例如,我不想在UINavigationController中包含每一個模態」我實際上最終這樣做了,因爲它是我發現的唯一解決方案,如果我不想看到導航欄,我只是隱藏它 – aryaxt

回答

0

顯示模態視圖時強制應用程序更改樣式時執行此代碼。

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

在情態動詞的UIViewController

-(void)viewWillAppear:(BOOL)animated 

在應用中可能是最好的plist你還需要設置

查看基於控制器的狀態欄外觀:NO

+0

不這樣做。我在我的模式的viewDidLoad中調用它,並且仍然看起來一樣,這應該與重寫preferredStatusBarStyle相同 – aryaxt

+0

您需要設置應用程序plist以允許它工作 – Chris

+0

狀態欄仍然是白色的,並且它沒有內容在裏面。全部爲空 – aryaxt

0

不知道這是否是一個好的解決方案。如何嘗試如下: -

-(void)displayModal{ 
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)]; 
    view.backgroundColor=[UIColor grayColor]; 
    [delegate.window.rootViewController.view addSubview:view]; 
    [delegate.window makeKeyAndVisible]; 
} 

-(void)dismissModal{ 
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)]; 
    view.backgroundColor=[UIColor whiteColor]; 
    [delegate.window.rootViewController.view addSubview:view]; 
    [delegate.window makeKeyAndVisible]; 
} 
4

狀態欄的顏色取決於視圖的頂視圖顏色(連接到狀態欄的視圖)。

如果導航欄連接到狀態欄,則狀態欄將採用導航欄。

如果導航欄被隱藏,那麼連接到狀態欄的頂視圖。該視圖顏色將由狀態欄拍攝。

因此,如果導航欄不存在,那麼您應該更改連接到狀態欄的視圖的顏色。

希望得到這個幫助。

0

嘗試設置在導航控制器的視圖背景色:

let navController = UINavigationController(rootViewController: yourController) 
navController.view.backgroundColor = UIColor.blue 

// If you also want to set the navigation bar background color: 
navController.navigationBar.backgroundColor = UIColor.blue