原文來自這里:iOS7下Status Bar字體顏色修改。
舊項目在iOS7上遇到status bar字體顏色需要修改的問題,症狀如下:導航欄設置為黑色后,iphone上status bar的字體顏色會自動變成白色,但是在ipad上status bar的字體顏色還是黑色,這樣就看不清楚了。
為了搞清原因,新建了一個Mater-Detail模版工程,觀察了下status bar的顏色變化,如圖:

iphone- default

ipad default
可見默認的,bar是白色透明,status bar上的字體是黑色。然后嘗試把master中的bar修改成黑色不透明:
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
[self.navigationController.navigationBar setTranslucent:NO];
然后再觀察:

iphone black

ipad black
這時,iphone上的status bar自動轉換成白色,而ipad上還是黑色。因為只修改了Master的nav bar,所以ipad上看上去有點奇怪。很顯然,iOS7下的status bar是和當前的viewController有關聯的。這讓我一下子想到了Apple的UI Transition Guide:
因此我們有兩種解決方案:
1. 調用 setNeedsStatusBarAppearanceUpdate, 然后實現
-(UIStatusBarStyle)preferredStatusBarStyle;
注意ipad下,window的rootViewController是SpliteViewController,我們需要寫一個SpliteViewController子類,在子類里實現上述方法。
2. 在infoPlist里設置UIViewControllerBasedStatusBarAppearance為NO,然后在代碼里添加:
[application setStatusBarStyle:UIStatusBarStyleLightContent];
最后的效果:

ipad 修改
Master部分status bar的字體變成白色了。
以上說明了iOS7下,status bar修改的方法。最重要的一點,就是iOS7下viewController可以調整status bar的式樣,這就要求我們在App設計的時候。注意導航欄的背景色,背景圖片等的使用。