码迷,mamicode.com
首页 > 移动开发 > 详细

iOS6和iOS7代码的适配(3)——坐标适配

时间:2014-07-13 22:12:16      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   文件   os   

  由于iOS7里面status bar和视图是重叠在一起了,所以应用的y坐标就没法和以前一致了,需要重新计算设定。基本上,你的应用用Xcode5运行一下就能看见这个问题,这里写了一个最简单的例子,一个View上加了一个Label控件,分别在iOS6和iOS7的模拟器上的样子。

bubuko.com,布布扣

      从图上明显可以看到,iOS7上的应用y坐标起始计算点是从屏幕顶点算起,而iOS6是从status bar来算起,这个原因是导致一切问题的根源。

      好了,找到了问题就好办,我列举一下看到过的尝试过的方法:

1. 修改window的frame坐标

      这个思路是在iOS7系统里面把windows下拉20个pixel,这样可以让开status bar的位置,于是一切都恢复了正常。

      好处是不用每个viewController来逐个修改,一般在AppDelegate.m一个文件里面修改即可。坏处是现实比想象的残酷,看起来简单方便的方法总有各种各样的问题,网上这样做的也各种吐槽,多次努力没结果后我也放弃了继续钻研。

2. 手动修改坐标

      这个方法对于不使用XIB文件的学院派极客是唯一的方法,也没有任何问题,就是工作量大。另外,对于使用IB来辅助做UI的应用来说就不太适合了。

3. 修改Delta值

      作为苹果公司来说,推出iOS7时显然可以预计到这样的困境,它也确实给大家提供了解决方案。这个方案是苹果在官方文档里面介绍过的方案。

      首先是选择需要适配的IB文件,把Interface Builder Document里面的View as选择成iOS 6.1 and Earlier。   

bubuko.com,布布扣

      这样在IB里面各个控件都会变成iOS6的样式,但此时在iOS7上运行系统仍然会用iOS7的控件来显示,坐标也仍然不正确——貌似一点作用都没有。恩,这只是第一步,不用急,再做一步就可以实现适配了!

      修改DeltaY的值,修改成什么值是根据你的实际情况定的,我这里显然就是status bar的高度,20个pixel。

bubuko.com,布布扣

      再运行一下应用看看,viewController是不是已经适配好了?  

      这个方法简单直观,但需要在多个viewController里面一一做适配,不过总体工作量不大,适配效果也很良好,旋转屏幕等等都没有问题,所以我的应用最后采用了这种方法来适配,实际中工作量也不大。

http://blog.csdn.net/sakulafly/article/details/17956681

iOS6和iOS7代码的适配(3)——坐标适配,布布扣,bubuko.com

iOS6和iOS7代码的适配(3)——坐标适配

标签:style   blog   http   使用   文件   os   

原文地址:http://www.cnblogs.com/geek6/p/3840610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!