一、隐藏状态栏
方式一:
iOS7以后,隐藏状态栏需要同时在Info.plist中设置
Status bar is initially hidden、View controller-based status bar appearance这两个Key。
它们对应的Value都是Boolean类型。如图:
注意:使用这种方式设置之后,效果是全局的,默认情况下所有视图控制器都会隐藏状态栏。
在设置这两个key之后,我们就可以在程序中使用
[[UIApplication sharedApplication]setStatusBarHidden:NO];
[[UIApplication sharedApplication]setStatusBarHidden:NO animated:YES];
[[UIApplication sharedApplication]setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
来对状态栏进行代码上全局设置。通常,我们会将代码写在application: didFinishLaunchingWithOptions:里面。
方式二:
iOS7之后,苹果增加了
- (UIStatusBarStyle)preferredStatusBarStyle;
- (BOOL)prefersStatusBarHidden;
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation;
在需要修改状态栏的视图控制器中重写这三个方法,分别对应状态栏的样式、是否隐藏状态栏、状态栏的动画效果。
状态栏的监测:
使用[UIApplication sharedApplication].isStatusBarHidden来判断当前的状态栏是否被隐藏。
两种方式:
当我们在Info.plist里设置了View controller-based status bar appearance = NO之后,方式二将失效,也就是说在视图控制器中重写的三个方法将不会再被调用。
方式二在视图控制器中的执行顺序:
依次是
-[ViewController preferredStatusBarStyle];
-[ViewController prefersStatusBarHidden];
-[ViewController preferredStatusBarUpdateAnimation];
-[ViewController loadView]。