statusbar

 最近在休整iOS7对于statusbar的兼容问题。

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

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

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

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

第一种:

首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES;
然后,在UIViewController子类中实现以下两个方法:

1- (UIStatusBarStyle)preferredStatusBarStyle
2{
3    returnUIStatusBarStyleLightContent;
4}
5 
6- (BOOL)prefersStatusBarHidden
7{
8    returnNO;
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。从理论上讲,我很认同这种方法,但没有尝试成功。如有那位大神成功了尝试,多谢能指教。

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

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

01- (void)navigationController:(UINavigationController *)navigationController
02      willShowViewController:(UIViewController *)viewController
03                    animated:(BOOL)animated {
04 
05    if([navigationController isKindOfClass:[UIImagePickerControllerclass]] &&
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值