这几天苹果发布了iOS11和xcode9,为了尽快符合规范,所以下载了xcode9,因为我们的项目是用swift开发,所以,每次升级总是会让你头疼脑热,因为swift也发布了新版本,这次swift发布的新版本改动不是很大,没有像之前2.3到3.0那样让我头疼了两天,但是当我看到iphoneX的模拟器的时候,心里突然感觉到了一阵恶心,不知道苹果怎么会做出这样畸形的屏幕,但是没有办法啊,毕竟这是别人的东西,别人就是爸爸,爸爸说让你们怎么做,你们就得怎么做。下面开始正题,在适配的过程中遇到的问题我都会一一记录下来,希望可以帮助到有需要的人。
刚下载好xcode9,改完了所有恶心的红点,就迫不及待的运行了一下项目,想看看我们的项目在iphoneX上面运行会是个什么逼样,果然一运行,有些地方还是出现了变形的一幕,但是情况还是挺不错的,大部分页面居然完美匹配了。
正如标题,因为在iphoneX上面,导航栏的高度增高了不少,所以有些页面出现了被导航栏遮挡住的问题。
至于为什么会出现这个问题呢,这是我自己犯下的一个错误,可以说是代码的不规范造成的,相信会有部分的小伙伴也会遇到这样的问题,然后也是像我这样处理,所以写了这篇文章,希望可以帮助到有需要的小伙伴,以后用更好的方法去开发应用。
我们在编写UI页面的时候,经常会遇到:
比如我们往页面上添加一个view,这个时候我们回去设置它的frme,然后位置x,y都是从0开始,但是当我们写好代码之后运行,就会发现,我们添加的这个view被导航栏遮挡住了一部分,而这部分恰好就是导航栏的高度,所以之前我们不知道怎么处理的时候往往会将view的y坐标直接从64开始,将导航栏的高度空余出来。
如果是在之前,这样的做法确实看不出来什么问题,因为前面苹果的机型,导航栏都是64的高度,但是,在我们要去适配iphoneX的时候,导航栏的高度不在是64的高度,这个时候再去将view的y坐标设置为从64开始,在iphoneX上面运行的时候同样会被遮挡住一部分,但是我们又总不可能对这个机型单独去做适配吧。
其实苹果爸爸已经给出了这个处理办法的,在iOS7以后,可以添加一句代码设置view的有效位置:
这句代码的意思就是从导航栏下面开始有效位置一直到屏幕的底部,同理,有这样的几个属性可以根据不同的需求设置不同的属性:
解决问题的办法很简单,有需要的小伙伴可以自己去试试。