一、iOS6隐藏状态栏
在iOS6下隐藏状态栏可以这样做:
1.在didFinishLaunching代理方法里隐藏:
[application setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
2.在程序中使用
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
以上两种方法能够实现隐藏,但是美中不足!因为程序启动后会显示状态栏,然后再隐藏,会有一个一闪而过的效果!
可以使用下面这种方法:
3.修改xxx-Info.plist
在根结点Infomation Property List下面新加一项“Status bar isinitiallyhidden”(不用手动输入,可以直接在下拉菜单中选取)。这是个BOOL类型的键值,设为YES即可;这样当需要是使用第二种方法让其显示即可!
不过这些方法在iOS7显得很无力!因为SDK有所变化:
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
所以要适配iOS7,可以采用下面的方法
二、隐藏iOS7状态栏
1.修改xxx-Info.plist
在根结点Infomation Property List下面新加一项“View controller-based status bar appearance” 设置为NO;然后继续使用iOS6的隐藏方法;
2.不修改plist,在你的Viewcontroller里重写两个方法
这两个方法是iOS7才使用的,虽然iOS不调用,但是也不会造成什么影响;
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleDefault;
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
在某种情况下想改变状态,只需调用这个方法即可刷新:
[self setNeedsStatusBarAppearanceUpdate];
不过你要注意,只有在iOS7下才可以调用!
三、总结
感觉使用第一种方法适配iOS7比较省事些!