一、樣式
1. StatusBar有兩種樣式: (默認高度為20)
-
UIStatusBarStyleDefault :
UIStatusBarStyleDefault.png -
UIStatusBarStyleLightContent
UIStatusBarStyleLightContent.png
2. 改變狀態欄文字顏色方法:
方法1:直接設置storyboard的controller設置:
方法2:代碼設置,在UIViewController中重載: (個別頁面改變的話,建議用這種方法!)
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
這個方法不能直接調用,在需要改變樣式的地方調用:
**[self setNeedsStatusBarAppearanceUpdate] **
示例:
- (void)viewWillAppear:(BOOL)animated
{
[self setNeedsStatusBarAppearanceUpdate];
}
方法3:整個應用的狀態欄顏色統一設置
在info.plist中 View controller-based status bar appearance 設為NO(不設置時默認為YES),利用[UIApplication sharedApplication].statusBarStyle(優先)調節。
在AppDelegate.m中:(也可根據不同view個別添加到不同位置調節)
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
// 或:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
// 或(帶動畫效果,一般在willappear/willdisappear里設置)
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
方法4:如果有navigationbar,則可 設置navigationbarstyle去調節statusbar的顏色
通過storyboard調節navigationBarStyle
或代碼:
[viewController.navigationBar setBarStyle: UIBarStyleBlack];
二、StatusBar的顯示和隱藏
1. 個別頁面顯示和隱藏
推薦方法:
顯示和隱藏StatusBar只要在UIViewController中重載:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
同樣式改變一樣需要調用**[self setNeedsStatusBarAppearanceUpdate] **方法.
補充:
如果iOS6和iOS7都支持,則處理方式如下:
1)如果info.plist中 View controller-based status bar appearance 設為NO。
則在iOS6和iOS7都是用下面的方法隱藏status bar。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
2)如果View controller-based status bar appearance 設為YES。(默認)
則需要判斷當前是iOS6還是iOS7。
如果是iOS6,則還通過sharedApplication隱藏。
如果是iOS7,則用setNeedsStatusBarAppearanceUpdate的方式來隱藏status bar。
2. 全局默認無StatusBar
需要在項目配置info.plist文件總將Status bar is initially hidden 字段設置為 YES;并添加View controller-based status bar appearance 字段, 并將值設置為 NO:
也可和上面一樣設置來控制StatusBar全局隱藏:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
三、動畫效果
現在有兩種動畫效果:
- UIStatusBarAnimationFade
- UIStatusBarAnimationSlide.
從他們的名字可以得知他的具體是什么樣的效果。
實現動畫需要重載:
- (UIStatusBarAnimation )preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationSlide;
}
但是重載這個方法后,并沒有動畫效果。
這時,我們需要把[self setNeedsStatusBarAppearanceUpdate] 放在動畫block中執行:
[UIView animateWithDuration:0.3
animations:^{
[self setNeedsStatusBarAppearanceUpdate];
}];
這樣動畫效果就出現了。
ps: 有時有特殊的要求,需要對StatusBar的背景色進行改變,則可參考下面簡書的一篇文章,感覺不錯:
ios 狀態欄statusBar的背景顏色
其實這些是一開始學iOS所記下的筆記,很散亂,就打算拿出來整理下,分享分享,有什么疑問隨時留言討論下哈~