一、状态栏管理有两种方式,第一种是UIApplication来管理状态栏,而iOS7之后默认情况下状态栏是交给控制器管理的,可通过Info.plist文件的View controller-based status bar appearance字段设置。
1.View controller-based status bar appearance设置为YES,UIViewController来管理
[UIApplication sharedApplication].statusBarHidden = NO;
[UIApplication sharedApplication].statusBarHidden = YES;
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
2.View controller-based status bar appearance设置为NO,UIApplication来管理
- (BOOL)prefersStatusBarHidden {
return NO;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
二、实现启动页隐藏状态栏,进入首页显示状态栏的效果:
1.首先设置工程默认状态栏隐藏
2.Info.plist文件的View controller-based status bar appearance设置为YES
3.ViewController里设置状态栏样式
- (BOOL)prefersStatusBarHidden {
return NO;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
4.若有UINavigationController和UITabBarController还需要设置
- (BOOL)prefersStatusBarHidden {
return self.topViewController.prefersStatusBarHidden;
}
- (UIViewController *)childViewControllerForStatusBarStyle{
return self.topViewController;
}
5.若有支持屏幕旋转的控制器,设置竖屏显示状态栏 横屏隐藏状态栏
- (BOOL)prefersStatusBarHidden {
return [[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}