关闭

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

标签: ios7ios6状态栏
2640人阅读 评论(0) 收藏 举报
分类:

 

最近把开发环境升级到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,这个大家自己修改了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:140202次
    • 积分:3047
    • 等级:
    • 排名:第11900名
    • 原创:169篇
    • 转载:2篇
    • 译文:2篇
    • 评论:10条
    最新评论