在ios7之前
使用下面这个方式来设置显隐状态栏
- [[UIApplication sharedApplication] setStatusBarHidden:YES(NO) withAnimation:UIStatusBarAnimationSlide];
ios7.0及之后, 系统要求UIViewController自主地控制状态栏的显隐。 也即可以实现一个应用中, 有的界面显示状态栏,有的界面不显示状态栏,而且状态栏的样式可以是独立的。
- - (UIStatusBarStyle)preferredStatusBarStyle
- {
- return UIStatusBarStyleLightContent;
- //UIStatusBarStyleDefault = 0 黑色文字,浅色背景时使用
- //UIStatusBarStyleLightContent = 1 白色文字,深色背景时使用
- }
- - (BOOL)prefersStatusBarHidden
- {
- return NO; //返回NO表示要显示,返回YES将hiden
- }
- - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
- {
- return UIStatusBarAnimationSlide;
- }
代码中,若想控制status bar的展现形式,只需要调用[self setNeedsStatusBarAppearanceUpdate];方法即可。
可以把它放在动画中进行。
- [UIView animateWithDuration:.3 animations:^{
- if (ISIOS7) {
- [self setNeedsStatusBarAppearanceUpdate];
- }
- }];
如果这个UIViewController在Navigation Controller中, 也可以用上面这种方式做到。