也来说说ios6 ios7的状态栏适配的问题

原创 2013年12月04日 10:44:03

 

最近把开发环境升级到xcode5了,sdk也升级到了ios7了,也和大家一样遇到一些郁闷的问题。不过首先值得肯定的是xib文件变小了,网上很多说小到只有原来的十分之一,在我这里也是这样的。

最令我头痛的问题是状态栏的问题,我想很多人也遇到了,下面说说我是怎么解决的。

1,首先推荐下官方文档 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/uid/TP40013174-CH14-SW1  网上有些别的处理方式,但总觉得不靠谱。英语好的推荐来看下,像我这种英语不好的也咬咬牙来看下。

2,头痛的是我们发现,状态栏在 <=ios6 是有占20个像素的,viewController.viewy坐标是用第20个像素开始的。但是在ios7中状态栏是不占空间的,他是半透明漂浮在view上面的。所以问题就在于如果我把subViewy坐标的0位置开始布局,则在<=ios6中显示正常,在ios7中却会部分被状态栏覆盖。如果在View上预留20个像素。则在ios7中正常,在<=ios6中就会多出一段空白。

3,解决办法就是在ios7中把subview全部往下移,以在最上方留出20像素的空间来显示状态栏。可是如何来实现这个呢?看上面推荐的官方文档。

4,看完官方文档后,我采用的方式是:

4.1,取消勾选use autolayout。说实话,不取消勾选时如何来实现我是还不会。

 

 

取消勾选的目的是,取消之后才会有这个deltas

 

4.2,填deltas值 deltaY=Y_ios6 – Y_ios7。按照第二条的分析,我们希望ios6Y_ios6等于0ios7Y_ios7等于20,那么deltaY就应该是 -20。因为把y下移了,而屏幕大小不变,所以这边应该同时把deltaHeight设置成 20Height_ios6 – Height_ios7)。所以这边的结果是

 

 

4.3,可是如果每个控件都改,那不是很累吗,而且改动的太多了,不是吗?以下是本人想到的一个馊主意,供参考。比如我工程中得一个view是这样子的:

 

修改时,我新增了一个view,把原来的View作为新增viewsubview。把与viewcontroller关联的view重新关联到新增的View上来。修改后结果如下:

 

view1的为新增的view。这样之后只需要对view进行delta设置,其他控件不用再设置了。

 

5,对状态栏的适配至此就完成了。当然了对屏幕大小的适配还要调整Autosizing,这个大家自己修改了。

IOS6状态栏透明

  • 2014年05月11日 12:30
  • 9.65MB
  • 下载

iOS6 / iOS7 状态栏高度适配

问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以如果你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成下面这个样子:             左边是iOS6界...
  • yuanbohx
  • yuanbohx
  • 2014年04月20日 11:21
  • 16814

iOS6和iOS7代码的适配(1)

苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求——适配不同版本的SDK。目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下...
  • sakulafly
  • sakulafly
  • 2014年01月03日 22:03
  • 15162

关于ios7 状态栏自动适应的问题

目前开发了一个项目 发现状态栏 在ios6 和ios7上 不太一样  查了下资料 发现在ios7  状态栏不在是属于系统了 而是属于 当前view的一部分  自己搞了个解决的适应办...
  • sike2008
  • sike2008
  • 2013年12月17日 14:57
  • 1524

ios6、ios7适配问题

一、设置tableView背景透明 这个问题只在UITableViewStyleGrouped类型的UITableView中出现,UITableViewStylePlain类型的tableView...
  • delicious_d
  • delicious_d
  • 2015年01月14日 10:38
  • 358

IOS6、IOS7导航栏适配问题

#pragma mark 一个类只会调用一次 + (void)initialize {     // 1.取出设置主题的对象     UINavigationBar *navBar = [UI...
  • hong1595
  • hong1595
  • 2014年02月25日 17:22
  • 1264

iOS6到iOS7的适配

问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以如果你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成下面这个样子:             左...
  • xiaotian9959
  • xiaotian9959
  • 2015年03月06日 13:00
  • 329

iOS7和iOS6 UI适配的问题

xcode 5打开工程后,默认是以iOS7的UI标准进行设计的,在IB设计视图中看到的尺寸实际上针对iOS7而言,不要想着在IB中来调整元素的位置,以同时适配iOS6和iOS7, xcode5的尺寸面...
  • yuanya
  • yuanya
  • 2014年01月17日 11:33
  • 1233

iOS6与iOS7适配

// 1.判断是否为iOS7 #define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) 给UIImage添加...
  • gaojq_ios
  • gaojq_ios
  • 2015年07月22日 00:05
  • 279

适配ios6和ios7

iOS7上的应用y坐标起始计算点是从屏幕顶点算起,而iOS6是从status bar来算起.
  • tianjiqcs
  • tianjiqcs
  • 2014年05月22日 17:21
  • 263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也来说说ios6 ios7的状态栏适配的问题
举报原因:
原因补充:

(最多只允许输入30个字)