适配ios11与iphone x实践

Posted 布尔-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配ios11与iphone x实践相关的知识,希望对你有一定的参考价值。

一、适配ios11

问题1:项目中有原生与H5的交互,运行在iOS11时,直接漰溃在框架WebViewjavascriptBridge内部。

报错信息:Completion handler passed to -[WKWebViewJavascriptBridge webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once

解决:当时第一时间肯定是立即看github上该框架的issue,果然找到了解决方案。该issue链接:https://github.com/marcuswestin/WebViewJavascriptBridge/issues/302,详情如下图技术分享

按照上述提供的解决方案修改就好了,下图是修改前与修改后对比 ( 左图修改前,右图修改后 )

技术分享           技术分享

 

问题2:用户首次安装时, 定位权限框不弹出?

解决:原来在ios 11内权限的请求被降级了,因为之前工程内首次请求定位权限使用的方法为requestAlwaysAuthorization,但在ios11内要使用requestWhenInUseAuthorizationf

技术分享

 

问题3:tableView,scrollView,WkWebView等显示内容出现向下偏移。由于app首面就用了一个类似支付宝首页的滑动交互,scrollView上套了一个tableView,所以连滑动的效果也都一起出了问题。

解决:通过网上查找信息,发现ios11内scrollView多了一个contentInsetAdjustmentBehavior属性(默认UIScrollViewContentInsetAdjustmentAutomatic),在系统导航栏下,默认向下产生了偏移。因为工程内自己创建的tableView,scrollView,WKWebView都分别继承匪类xxbaseTableView, xxbaseScrollView, xxbaseWKWebView, 所以修改直接就在它们初始化时加下如下代码

技术分享

对xxbaseWKWebView则是self.scrollView.contentInsetAdjustmentBehavior

修改好后,经测试,那些不正常的页面确实正常了。之前在网上看到有人解决方案是在appdelegate里

[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

[UITableView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

这样确实可以解决这个问题,但是在调用出系统相册的地方,会导致系统相册页面的tableView自动向上移,即这个属性会影响到一些系统控制器内的UIScrollView,UITableView的偏移,所以不太建议使用这种方案。

 

问题4:ios11中tableView分组间距变大。

解决:原来组尾间距之前实现了heightForFooterInSection,而没有实现viewForFooterInSection方法,在ios11之前是没问题,但现在就都要实现,如果不需要他们之前有间距需要这样设置

技术分享

 

二、适配iPhone x

问题1:在iPhone x模拟器上有tabBar时,push页面底部的tabBar会向上跳动一下,然后返回回来后又是tabBar又正常,再push又会跳动。

解决:在拦截所有控制器push的地方加上如下代码

技术分享

 

问题2:关于iPhone x导航栏和底部TabBar高度及安全区的适配。如果不适配最直观现象就是iPhone x页面被辅满,显示内容被顶部刘海和底部home指示器挡住。

解决:

  a 关于导航栏:因为工程内没有用到系统的导航条,是完全自定义的一个view,所以iPhone x上只要将它的高度由64变高到

——————  未完待续 ——————

 

以上是关于适配ios11与iphone x实践的主要内容,如果未能解决你的问题,请参考以下文章

iOS11 与 iPhone X适配的那些坑(持更中...)

iPhone X 设计适配指南 & iOS 11 新特性

iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配

iOS适配

iOS11iPhone XXcode9 适配指南

iOS之iOS11iPhone XXcode9 适配指南