浅谈iOS11以及phoneX 的适配遇到的问题

当phoneX发布的那一刻,我想有不少程序猿都会不由的嘀咕一下,怎么长成这样?又得做适配了。事实上也如此,自从iOS11发布后,不少iOS11之前的项目用xcode9跑起来后会发现之前使用xib 或者 使用第三方约束框架搭建的界面要么位置跑偏了,要么就怎么点都没有反应,这时只需要把约束补全即可。

另外如果 发现原来控件是添加到新的窗口上的,并且窗口是通过UIWindow * window = [[UIApplication sharedApplication].windows lastObject]; 来创建的,在iOS11之后不显示时,只需要将其换成:UIWindow * window = [UIApplication sharedApplication].keyWindow;即可;

下面来说说我对phoneX 适配的做法:

1、跟UI要一张1125 * 2436的启动图片, 添加到LaunchImage的Finder目录中, 并在LaunchImage中的Contents.json文件中增加一下内容:

{

"extent" : "full-screen",

"idiom" : "iphone",

"subtype" : "2436h",

"filename" : "[email protected]",(注:这是图片名字)

"minimum-system-version" : "11.0",

"orientation" : "portrait",

"scale" : "3x"

}

这时运行项目就会看满屏填充了,之前上下留黑的情况就不会再出现

2、通过上述1后发现TabBar底部会出现透明,滚动界面时会有穿透的效果,只是因为phoneX上TabBar多了34Px引起的,这时只需在TabBar上插入一个白色的View来作为背景,并且其高度多加34Px即可。

3、如果项目中在界面最底部有操作按钮的,如:界面里有tableView,底部有一个操作工具条,工具条永远都显示在底部,不会随着tableView的滚动而滚动,这时需要将这些操作工具条往上挪动34Px,其父控件设置成白色即可,由于phoneX的底部中间部位有三个虚拟的系统操作控件,比如返回桌面等操作的,是不能够被遮挡的,如果不将自定义的控件往上移,其点击事件有可能会被系统操作事件拦截。当你用模拟器跑项目时会发现底部中间有一条黑色的线,那就是虚拟的系统操作控件所在的位置。

4、在计算控件位置的时候,由于phoneX的导航栏以及底部的TabBar的高度都增加了,因此也需要把这些因素考虑进去,如果发现界面按照效果显示了,但是点击时没有反应,这时给每一个控件添加不同的背景颜色进行排查,有可能是因为被某个控件遮挡住了。

好了,以上是我适配时遇到的问题以及处理方式的总结,由于这是第一次写文章,写的不好请不要喷,技术在于积累与总结,只有不断的总结才会有进步。

你可能感兴趣的:(浅谈iOS11以及phoneX 的适配遇到的问题)