WKWebView使用及自适应高度
记录一下 iOS8 之后的新控件 WKWebView,用以替代之前的 UIWebView,因为需求是在 TableView 的 Cell 中放一个 WebView。就产生了滑动手势冲突,为了解决这个问题就需要让 webView 高度自适应
一、新特性
在性能、稳定性、功能方面有很大的提升,最明显的就是内存占用降低了很多。 允许 JavaScript 的 Nitro 库加载并使用(UIWebView 中限制) 支持了更多的 HTML5 特性; 高达 60fps 的滚动刷新率以及内置手势(支持右滑返回); 将 UIWebViewDelegate 与 UIWebView 重构成了 14 类与 3 个协议(查看苹果官方文档);二、初始化
首先需要引入 WebKit 库 采用 configuration 的方式初始化(可选) 加载网页三、WKWebView 代理方法
1.WKNavigationDelegate
该代理提供的方法,可以用来追踪加载过程(页面开始加载、加载完成、加载失败)、决定是否执行跳转。
页面跳转的代理方法有三种,分为(收到跳转与决定是否跳转两种)
2.WKUIDelegate
剩下三个代理方法全都是与界面弹出提示框相关的,针对于 web 界面的三种提示框(警告框、确认框、输入框)分别对应三种代理方法。下面只举了警告框的例子
3.WKScriptMessageHandler
这个协议中包含一个必须实现的方法,这个方法是提高 App 与 web 端交互的关键,它可以直接将接收到的 JS 脚本转为 OC 或 Swift 对象
四、WKWebView 加载 JS
五、作为 cell 自适应行高
2.gif 在 didFinishNavigation 方法中获取行高,然后刷新表格,网上资料所说的获取 webview.scrollview.contentsize.height 本人测试不可行,此处采用调用 js 通过 ajax 获取高度 此处完成之后需要在 heightforrow 方法中设置 cell 的高为 webview 的高,但是会出现一个问题就是内容显示不全。还需要调用下面这个方法进行重布局六、小结
自适应行高是本文的重点,是我自己试验了多种方法之后确定可行的方法
下篇文章将介绍拦截 url 进行原生跳转
文章来源:
Author:Oragekk's Blog
link:https://oragekk.me/posts/iOS/system/WKWebView.html
下一篇:WKWebView拦截URL
上一篇:textfield限制输入字符