博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xcode5 ios7 status bar 各种隐藏问题
阅读量:6100 次
发布时间:2019-06-20

本文共 2395 字,大约阅读时间需要 7 分钟。

各种关于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了。
但是在调用相机功能,后又会出来。
最后找到如下文章解决问题

--------------------------------------------------------

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

1.总结的最全面的要数

这篇文章总结的固然很好,但终究是少了些例子。而且是英文的,相信不少和我一样英文不好的,看得是一头雾水。不过增加些概念方面得知识还是有必要的。

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

第一种:

首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES;

然后,在UIViewController子类中实现以下两个方法:

1 - (UIStatusBarStyle)preferredStatusBarStyle
2 {
3     return UIStatusBarStyleLightContent;
4 }
5  
6 - (BOOL)prefersStatusBarHidden
7 {
8     return NO;
9 }
最后,在需要刷新状态栏样式的时候,调用[self setNeedsStatusBarAppearanceUpdate]方法即可刷新 

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

第二种:

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

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。从理论上讲,我很认同这种方法,但没有尝试成功。如有那位大神成功了尝试,多谢能指教。

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 }

很好的解决了我的问题。参考链接如下: 

还是先辈们总结的到位呀:又发现了一篇好文章

---------------------------------

转载于:https://my.oschina.net/wangdk/blog/210147

你可能感兴趣的文章
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
消息队列Kafka学习记录
查看>>
Asp.net MVC Razor模板引擎技巧分享
查看>>
Android异步更新
查看>>
性能测试模型和评估
查看>>