2012-09-20 36 views
13

我有以下星座:如何改變狀態欄上模態訪問的iOS 6

主視圖(自定義的UIViewController,沒有navigationcontroller或導航欄),含有一個按鈕,模態塞格斯到第二表視圖控制器,這是嵌入導航控制器:

的MainView - >導航器 - > TableView中

在的MainView狀態欄是黑色(與iOS 6沒有改變 - 即使在狀態欄設置爲默認值) 在TableViewController狀態欄應該具有默認樣式(iOS 5中爲灰色,Blu e由於iOS 6中的導航欄而着色)。

在iOS 5中,這是容易通過的代碼在TableViewController下列行:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarStyle:)]) { 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
} 

iOS 6的下運行該注意到發生的情況。我怎樣才能做到這一點?我嘗試了所有可能的狀態欄設置下的項目總結和plist(像這裏描述:https://stackoverflow.com/a/12468689/1685971

此外,在故事板一切看起來不錯。運行在模擬器或設備上的應用程序,它看起來不同: Storyboard Simulator

回答

5

試試這個 「黑客」 : 你必須添加一個導航欄到你的第一個視圖控制器。那麼你有兩種可能性。

1)設定導航欄爲0

2α值)設置條的y位置到-43px(看這裏:http://moduscreate.com/tinting-your-status-bar-in-ios6-and-phonegap/

編輯:

要獲得正確的顏色,您必須設置不可見UINavigationBar的tintColor。所以默認設置爲黑色。在您的按鈕操作中,您必須將tintColor設置爲您的navigationController.navigationBar.tintColor。在關閉按鈕的操作下,您需要將其設置回[UIColor blackColor]。

+0

即使功能狀態欄着色不是Apple完全實施的。您的解決方案是一種解決方法。乾淨的解決方案應該是應用程序檢查每個視圖控制器上的狀態欄色調 - 不僅在第一個視圖控制器上。 – FrankZp

2

第一視圖控制器必須具有功能起作用導航控制器/酒吧。 狀態欄不會改變整個應用程序的顏色(在iOS6中),但會適應您啓動視圖時的導航欄顏色。如果您的起始視圖不包含導航欄,則狀態欄不適應顏色。 (請參閱http://i.stack.imgur.com/n9ubK.png

+0

是這個新功能選擇頂部導航欄的顏色來爲狀態欄着色。但是這裏的要求是,第一個視圖控制器沒有導航欄。在iOS 5中,這可以通過上面的代碼實現。但在iOS 6中,狀態欄不可更改! – FrankZp

+1

_在TableViewController上,狀態欄應該有默認樣式(iOS 5中爲灰色,由於iOS 6中的導航欄而出現藍色)._這種假設是錯誤的。 –

+0

上面顯示的代碼將TableViewController上的狀態欄設置爲默認樣式。這適用於iOS5 - 不適用於iOS6(狀態欄保持黑屏 - 請參閱模擬器屏幕截圖)。 – FrankZp

0

您不必將導航欄的樣式設置爲您的tableviewcontroller。

試試這種方法。 1.將導航控制器添加到主視圖。 2.將其屬性設置爲隱藏。 3.當顯示tableviewcontroller,設置導航欄屬性隱藏無

導航控制器 - >欄隱藏= YES - > 的MainView - >欄隱藏=沒有 - > TableView中

+0

問題是,模式顯示TableViewController。因此,MainViewController和TableViewController不能嵌入到同一個導航控制器中(請參閱故事板屏幕截圖)。當使用兩個導航控制器(一個用於MainView和一個用於TableView)時,上面描述的問題保持不變... – FrankZp