xcode5 ios7 status bar 各类隐藏问题

各类关于ios7 下隐藏status bar的问题。聚集一下:

用xcode5开发新的iOS游戏,虽然我已经在info.plist里面把Status bar is initially hidden设置成了YES,但在设备上一跑仍是看到status bar,

到Info.plist,而后添加一个新的row,"View controller-based status bar appearance",而后把键值设置为NO.
再测试,就ok了。

可是在调用相机功能,后又会出来。

最后找到以下文章解决问题

-------------------------------------------------------- ios

先来看看网上同胞们给出的答案: xcode

1.总结的最全面的要数http://stackoverflow.com/questions/18294872/ios-7-status-bar-back-to-ios-6-style 架构

这篇文章总结的当然很好,但终究是少了些例子。并且是英文的,相信很多和我同样英文很差的,看得是一头雾水。不过增长些概念方面得知识仍是有必要的。 app

2. 本身看到的其余人的解决办法以及本身尝试的结果,大概是下面这样子的,欢迎拍砖交流。 测试


第一种: ui

首先,须要在Info.plist配置文件中,增长键:UIViewControllerBasedStatusBarAppearance,并设置为YES;
而后,在UIViewController子类中实现如下两个方法: spa

1 - (UIStatusBarStyle)preferredStatusBarStyle
2 {
3     return UIStatusBarStyleLightContent;
4 }
5  
6 - (BOOL)prefersStatusBarHidden
7 {
8     return NO;
9 }

最后,在须要刷新状态栏样式的时候,调用[self setNeedsStatusBarAppearanceUpdate]方法便可刷新 

这种方法本人以为不是很好(不知道是否方法部队),能解决问题,但对于没有基类的程序(架构不是太好的应用),未免很繁琐,须要进行追个处理。 code


第二种: orm

首先,须要在Info.plist配置文件中,增长一下两个键值对。 blog

View controller-based status bar appearance > NO

Status bar style > UIStatusBarStyleLightContent (simple string)(这个我本人建议仍是加在代码中比较好,若是代码中有相应的处理,其余有地方设置部队,相应的controller将不受影响)

而后,在相关的controller中进行修改。

好比:navigationcontroller须要增长一个64pix的图片,或者修改其高度

其余普通的controller,本人的处理办法是加入代码:

01 - (void)viewDidAppear:(BOOL)animated
02 {
03     [super viewDidAppear:NO];
04     CGRect frame = self.view.frame;
05     if ([[UIDevice currentDevice] isOS7Version]) {
06         frame.origin.y = 20;
07         frame.size.height = self.view.frame.size.height - 20;
08         [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
09     } else {
10         frame.origin.x = 0;
11     }
12     self.view.frame = frame;
13 }


第三种:

直接设置window,由于在ios7中statusbar是浮在上面的,那么咱们就将window向下移20pix。从理论上讲,我很认同这种方法,但没有尝试成功。若有那位大神成功了尝试,多谢能指教。

http://stackoverflow.com/questions/18886195/ios-7-status-bar-overlapping-ui

3. 在这里鄙人还要补充的一点是UIImagePickerController对于statusbar的修改。这点曾纠结了我一个多小时,后来看到了有人以下解决:

1 - (void)navigationController:(UINavigationController *)navigationController
02       willShowViewController:(UIViewController *)viewController
03                     animated:(BOOL)animated {
04  
05     if ([navigationController isKindOfClass:[UIImagePickerController class]] &&
06         ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
07         [[UIApplication sharedApplication] setStatusBarHidden:NO];
08         [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
09     }
10 }

很好的解决了个人问题。参考连接以下: http://stackoverflow.com/questions/2982095/is-there-a-way-to-prevent-uiimagepickercontroller-change-statusbar-style

仍是先辈们总结的到位呀:又发现了一篇好文章http://www.vinqon.com/codeblog/?detail/11109

---------------------------------
相关文章
相关标签/搜索