2013-03-29 224 views
1

我的AppDelegate中有一個UINavigationController,並帶有一個具有UITableView的RootViewController。啓動時,狀態欄將其顏色更改爲導航欄的顏色。當我有色我的導航欄,以橙色,這是個什麼狀態欄看起來像:iOS狀態欄更改顏色以自行匹配導航欄

enter image description here

看來,我的導航欄移動到頂部一點點。看起來導航控制器不識別狀態欄。我該如何解決這個問題?

我在我的應用程序中唯一的事情是一個AppDelegate和一個空的RootViewController。我application:didFinishLaunchingWithOptions是:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 
[navigationController.navigationBar setTintColor:[UIColor orangeColor]]; 
self.window.rootViewController = navigationController; 
[self.window makeKeyAndVisible]; 
return YES; 

爲RootViewController的我的IB文件只是有一個空的觀點。

沒什麼不尋常的。我對iOS非常有經驗,這就是我一直在做的每一次。我不知道這次有什麼不同。

有人可以請教我嗎?謝謝

+0

是什麼讓你說你的導航欄以任何方式轉移?從你發佈的屏幕截圖看,情況看起來很好。 – Till

回答

6

將你的狀態欄樣式設置爲UIStatusBarStyleBlackOpaque,你應該得到一個堅實的黑色條。

要做到這一點,對應用程序的情況下使用setStatusBarStyle:animated:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque 
              animated:NO]; 
4

在iOS 6.0中,狀態欄更改顏色以匹配導航欄(如果有的話)。這是預期的行爲。

+0

有趣的 - 我只是決定從5移動到完整的iOS 6開發。任何方式來覆蓋這個?我注意到當我設置背景圖像時會發生同樣的情況。我只看了一些應用程序,然後看到黑色狀態欄 – darksky

+0

狀態欄通過「查看」左上角像素(如果我沒有記錯的話)分析導航欄的圖像/顏色 - 從該像素的顏色中獲取顏色值。 – Till

+0

是否沒有編程方式來覆蓋此?彩色狀態欄很煩人。我只打開了幾個僅適用於iOS 6的應用程序,它們具有自定義彩色導航欄和黑色狀態欄。 – darksky

2

添加以下代碼:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque; 

這會讓你的狀態欄再度被黑。

您應該在之後添加更改導航欄的顏色。