用Xcode5運行一下應用,第一個看到的就是status bar的變化。在iOS6中,status bar是系統在處理,應用中不需要考慮這部分,iOS7之後是應用在處理,每個ViewController都可以控制status bar。
iOS7裡面的status bar是透明的,會把下面的內容一起顯示出來,比如我的應用色調是深色調,希望status bar上的圖標是淺色的。那麼我需要做兩步:
1. 在info.plist中設置View controller-based status bar appearance為NO
2. 在AppDelegate.m文件中,didFinishLaunchingWithOptions方法裡面增加
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [[UIApplication sharedApplication] setStatusBarHidden:NO];
如果你的應用有些viewController中status bar需要特殊設置,那麼就需要在相應的viewController中處理,這就需要重寫兩個API,preferredStatusBarStyle和prefersStatusBarHidden。
-(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
- (BOOL)prefersStatusBarHidden { return YES; }然後在需要刷新狀態欄樣式的時候,調用[self setNeedsStatusBarAppearanceUpdate]方法實現刷新。
從iOS7來說,status bar是浮動在上層的,這樣如果window本身下移20個pixel,那麼也可以完美的顯示。這個方法在理論上應該成立,我努力嘗試過,但沒有成功,如果有成功的大大請告訴我應該怎麼做。