1、在IOS的开发中经常有这样的需求,就是隐藏顶部的状态栏,以前没有具体操作到这块,以为只是简单的调用下面的代码就可以实现
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
实际上这行代码的起作用是有前提的。(只是在iOS6下才能实现,经本人测试)
2、在继续此次博客之旅前,我为大家普及下关于项目info.plist文件中的俩个配置,见下图
Status bar is initially hidden :该属性设置为 YES时,根据字面意思也可以明白,即程序启动后将会隐藏掉状态栏。设置为 NO,程序启动后将会显示状态栏。这个属性的作用一般是用在 加载启动页面的时候,如果启动图片尺寸是 640*1136 或 640*960时,就需要将其设置为YES。然后进入程序之后调用如下方法将隐藏的状态栏显示出来。
[[UIApplication sharedApplication]setStatusBarHidden:NO];
view controller-base status bar :该属性设置为YES,代表viewController对状态栏控制的优先级高于 uiapplication,设置为NO,代表 UIApplication对状态栏控制的优先级高于view controller。
3、下面介绍如何在IOS6、iOS7下隐藏状态栏
3.1、iOS6下隐藏状态栏的方法很简单,在想隐藏的地方直接调用
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
3.2、iOS7下隐藏状态栏。由于在iOS7中状态栏不仅仅是状态栏自己,状态栏和导航栏合体了,所以单纯的调用
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
这行代码不会起到隐藏状态栏的效果。需要配合以下代码方能实现。
首先、在info.plist中配置view controller-base status属性为 YES,将view controller对状态栏的控制权优于uiapplication.
其次、在viewcontroller中实现下面的方法
- (BOOL)prefersStatusBarHidden
{
return YES;
}
最后、在viewdidload 方法中调用
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[self prefersStatusBarHidden];
[self setNeedsStatusBarAppearanceUpdate];
}
}
好了,运行一下就可以发现状态栏被隐藏掉了俄。