狀態列,UIStatusBar顯示了基本的資訊,如電量、電訊廠商等。除非你的應用是全屏,否則他會顯示在介面的最頂端,這個佔用螢幕寬度高20個Point的狀態列到底有哪些特性呢。在iOS6和iOS7之後的版本又又哪些區別呢。
在iOS6下,如果statusBarStyle為UIStatusBarStyleDefault的話,則狀態列的顏色會自動隨著導覽列的顏色變化而變化,其顏色為導覽列的平均顏色;如果修改StatusBarStyle為UIStatusBarStyleBlackOpaque或UIStatusBarStyleBlackTranslucent後就固定為不透明黑色和透明黑色,字型為白色,不再隨導覽列變化了。
在iOS6下,狀態列佔用單獨的20個點得高度,所有視圖控制器的View的座標都是在之下開始算起的。
在iOS6下,statusBarStyle預設為UIStatusBarStyleDefault,背景色和文字顏色隨著導覽列的變化而變化,如果沒有導覽列則是黑底白字。
在iOS7下,statusBarStyle預設為UIStatusBarStyleDefault,但是它是透明背景色,而且它的文字顏色為黑字。
在iOS7下,狀態列不再有背景色,它是透明的背景色,他得背景色與離它最近的視圖背景一致),而且它不再單獨佔用20個點的高度
在iOS7下,工程的info.plist設定檔中新增了一個屬性View controller-based status bar appearance,預設是yes。(iOS6下此值不影響)它的意思說明,狀態列的背景色和文字顏色是基於視圖控制器中視圖的變化而變化的,所以當此值為NO時,設定UIApplication的statusBarStyle,statusBarHidden屬性才有效果,當此值為yes時,重寫UIViewController的如下兩個方法來設定狀態列的背景色、字型顏色和隱藏屬性:
[self setNeedsStatusBarAppearanceUpdate];//更新動畫狀態
- (UIStatusBarStyle)preferredStatusBarStyle{
returnUIStatusBarStyleLightContent;
}
- (BOOL)prefersStatusBarHidden{
return NO;
}
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation{
returnUIStatusBarAnimationNone;
}