IOS status bar,iosstatusbar
從iOS7開始,系統提供了2種管理狀態列的方式
通過UIViewController管理(每一個UIViewController都可以擁有自己不同的狀態列)
通過UIApplication管理(一個應用程式的狀態列都由它統一管理)
在iOS7中,預設情況下,狀態列都是由UIViewController管理的,UIViewController實現下列方法就可以輕鬆管理狀態列的可見度和樣式
狀態列的樣式
- (UIStatusBarStyle)preferredStatusBarStyle;
狀態列的可見度
- (BOOL)prefersStatusBarHidden;
如果想利用UIApplication來管理狀態列,首先得修改Info.plist的設定
UIApplication *app = [UIApplication sharedApplication];
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
[app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
// app.statusBarHidden = YES;
// app.statusBarStyle = UIStatusBarStyleLightContent;
iOS 7 的 status bar 與 nav bar 一體化是個好設計?
舉個例子,下面這類App經過一體化修改後,主介面看上去沒有任何問題,status bar融入的很好,不過這是建立在以下條件上:
nav bar固定,不隨內容滾動而滾動或消失;nav bar背景用色一致,沒有同時使用反差較大的顏色。一旦把這個App的側邊欄滑出來,就會發現問題所在了:
主介面亮色調,側邊欄暗色調,status bar上的黑色元素在側邊欄上就難以辨別;status bar背後的內容雜亂不確定,和status bar的元素有視覺衝突。最近為了根據iOS7 HIG最佳化UI,正好碰到了這一問題,想到的解決方案是這樣的:
仍然按照以前的方法,status bar設定背景色,不透明;status bar的背景使用iOS7預設的system blur(毛半透明效果),但是在把半白半黑的介面高斯模糊後個人感覺分界點的視覺效果並不好;主介面時候status bar的元素為黑色,滑出側邊欄的時候動畫漸層成白色(是否可以實現?),並淡入一條黑色半透明非blur背景,這是個人感覺相對比較好的效果。不知有無更好的方法?求教
ios7中怎讓程式使用統一的status bar風格,而不是各個controller都有自己的?
如果controller用自己的,則實現preferredStatusBarStyle and—within方法。如果程式執行過程中preferredStatusBarStyle的傳回值發生變化,那麼調用setNeedsStatusBarAppearanceUpdate如果你不允許view controller調整status bar,那麼設定UIApplication的statusBarStyle,並且在info.plist中設定UIViewControllerBasedStatusBarAppearance為NO。