美文网首页
iPhone X适配以及iOS 11可能出现的常见崩溃(info

iPhone X适配以及iOS 11可能出现的常见崩溃(info

作者: 夏小逗gofey | 来源:发表于2017-12-04 10:47 被阅读210次

    iPhone X适配

    程序启动图,引导图等

    iPhone X像素尺寸1125x2436,也就是说,你的启动图或者是闪屏页,App引导图等得新加一个图了,另外iPhone X用的是三倍图,开发用的逻辑分辨率即为375x812,可见iPhone X的宽度是和4.7尺寸一样的,只不过高度增加许多,程序启动页,可以专门为iPhone X增加(如下图),但App的其他页面,比如整个页面的背景图,自己做的引导页等就需要UI新给一张1125x2436的图,我的做法是在代码中对iPhone X加载这张新图,把这张新图放在原背景图等的三倍图位置上,因为原来的三倍图是适配5.5寸的,避免图被拉伸。

    程序启动页(选择好之后,自然会多出选择iPhone X的程序启动页的一项)

    引导图或背景图等

    安全区

    说到iPhone X适配问题,也得和大家解释一下安全区的概念,请看下图(此图来自莫贝网,发布者mobileui,在此十分感谢),绿色部分即是安全区,也就是我们开发时所使用的区域

    下面详细介绍一下非安全区域的尺寸如下图(此图来自莫贝网,发布者mobileui,在此十分感谢)

    如何适配顶部和底部

    我们适配好程序启动页之后,会发现导航栏和小刘海灰常近,我们需要调整一下导航栏+状态栏高度了,原来偶们都是统一64,而现在估计要重新写个宏了改为88,KDeviceHeight = 812 ? 88 : 64 ; 底部适配的话,注意距离底部34(逻辑分辨率)就好,至于tabBar的话,还是根据不同产品需求而定。

    如何禁止scrollView的自动偏移64像素

    原来我们只需要

    设置automaticallyAdjustsScrollViewInsets=NO就可以了,iOS 11之后

    if(@available(iOS11.0, *)) {

    self.scrollView.contentInsetAdjustmentBehavior=UIScrollViewContentInsetAdjustmentNever;

    }else{

    self.automaticallyAdjustsScrollViewInsets=NO;

    }

    关于info.plist

    关于定位服务。原有的NSLocationAlwaysUsageDeion改为NSLocationWhenInUseUsageDeion,因此,在原来项目中使用requestAlwaysAuthorization获取定位权限,而未在plist文件配置NSLocationAlwaysAndWhenInUseUsageDeion,系统框不会弹出。建议新旧key值都在plist里配置。

    关于相册服务。原来的Privacy - Photo Library Usage Description 改为 Privacy - Photo Library Additions Usage Description,建议新旧key值都在plist里配置。

    关于Xib和StoryBoard适配

    如果你只需要适配iOS 9以上的恭喜你,你可以直接在右边打开安全区,直接做适配即可

    如果不是的话,那就有点麻烦了,我是这样来做的,将需要进行iPhone X的约束拖出来,如下图

    (按住control,直接拖即可)

    代码也需要进行补充,如下,此时你该多注意是否超过了下边的安全区

    if(KDeviceHeight ==812) {

    self.navBgViewHeightConstraints.constant=88;

    self.tipLabelHeightConstraints.constant+=24;

    [selfupdateViewConstraints];

    }

    关于webVIew的适配

    适配好导航栏,你也把webView扩充到整个屏幕,可能会发现这样的问题,webView内部的tabBar下边会露出一块内容

    解决方案有两种:

    plan A:要h5前端去适配iPhone X

    plan B:我们将webView去缩减回原来的高度,也就是

    [UIScreenmainScreen].bounds.size.height - 88 - 34

    底部34的高度就靠我们自己写一个view来做修补,

    记得webView进入二级网页时,要把这个view隐藏,并给webView的高度增加34

    if(@available(iOS11.0, *)) {

    self.webView.scrollView.contentInsetAdjustmentBehavior=UIScrollViewContentInsetAdjustmentNever;

    }

    另外,如果webView出现自动调整64的情况,可通过

    if(@available(iOS11.0, *)) {

    self.webView.scrollView.contentInsetAdjustmentBehavior=UIScrollViewContentInsetAdjustmentNever;

    }

    实现。

    相关文章

      网友评论

          本文标题:iPhone X适配以及iOS 11可能出现的常见崩溃(info

          本文链接:https://www.haomeiwen.com/subject/jbvtixtx.html