2014-12-03 27 views
3

由於蘋果在iOS中7中引入UIViewControllerBasedStatusBarAppearancepreferredStatusBarStyle我想了解最新的最佳實踐來更改狀態欄顏色建在視圖控制器,如:preferredStatusBarStyle原生控制器

UIImagePickerController 
MFMailComposeViewController 
UISearchDisplayController 

例如,當使用UISearchDisplayController,我想在顯示搜索欄時將狀態欄從淺色變爲黑色。
我該怎麼做?我需要繼承UISearchDisplayController嗎?也許是類別?

UIImagePickerController它有自己的視圖控制器堆棧,如何在呈現照片選擇器時更改它們的狀態欄樣式?

到現在爲止我所使用的全局爲什麼

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

,但現在所有的每視圖控制器的方法,所以我將如何修改控制器,是不是我的?

+0

UISearchDisplayController不是視圖控制器,它已被棄用。您仍然可以在您的源視圖控制器上實現'preferredStatusBarStyle',並在您輸入或離開searchDisplay時返回不同的狀態欄樣式。有'setNeedsStatusBarAppearanceUpdate'強制UIKit重新查詢狀態欄樣式。 – Andy 2014-12-03 14:12:29

+0

@你是對的我沒有注意到它不是一個視圖控制器(我只是假設,因爲它管理自己的表格視圖..),我必須使用它,儘管它不推薦使用,因爲我支持iOS 7以及 – Mario 2014-12-05 21:35:37

回答

1

是的,你可以繼承這些類來改變狀態欄的外觀。根據UIImagePickerController,它只是UINavigationController的子類,因此,如果您在子類中繼承和實現preferredStatusBarStyle,則導航上顯示的所有其他視圖將具有相同的狀態欄。祝你好運!

+0

這是實際上是正確的。 – Andy 2014-12-03 14:05:46

+0

值得補充的是,無論Apple如何對其進行子類化,您都可以使用'MFMailComposeViewController'完成相同的操作,添加statusbar外觀方法不是犯罪行爲。它仍然是一個視圖控制器,無論是外部進程的入口。 – Andy 2014-12-03 14:06:34

+0

Fair和@Andy爲什麼不使用類別而不是子類化? – Mario 2014-12-05 21:33:05