iOS7下Status Bar字型顏色修改

scorpiozj發表於2013-10-10

原文來自這裡: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設計的時候。注意導航欄的背景色,背景圖片等的使用。

相關文章