前言
最近项目中的UIWebView被替换为了WKWebView,因此来总结一下。
示例Demo:WKWebView的使用
本文将从以下几方面介绍WKWebView:
- 1、WKWebView涉及的一些类
- 2、WKWebView涉及的代理方法
- 3、网页内容加载进度条和title的实现
- 4、JS和OC的交互
- 5、本地HTML文件的实现
一、WKWebView涉及的一些类
- WKWebView:网页的渲染与展示
1 | 注意: #import <WebKit/WebKit.h> |
- WKWebViewConfiguration:为添加WKWebView配置信息
1 | //创建网页配置对象 |
- WKUserScript:用于进行JavaScript注入
1 | //以下代码适配文本大小,由UIWebView换为WKWebView后,会发现字体小了很多,这应该是WKWebView与html的兼容问题,解决办法是修改原网页,要么我们手动注入JS |
- WKUserContentController:这个类主要用来做native与JavaScript的交互管理
1 |
|
- WKScriptMessageHandler:这个协议类专门用来处理监听JavaScript方法从而调用原生OC方法,和WKUserContentController搭配使用。
1 | 注意:遵守WKScriptMessageHandler协议,代理是由WKUserContentControl设置 |
二、WKWebView涉及的代理方法
- WKNavigationDelegate :主要处理一些跳转、加载处理操作
1 |
|
- WKUIDelegate :主要处理JS脚本,确认框,警告框等
1 |
|
三、网页内容加载进度条和title的实现
1 | //添加监测网页加载进度的观察者 |
四、JS和OC的交互
- JS调用OC
这个实现主要是依靠WKScriptMessageHandler协议类和WKUserContentController两个类:WKUserContentController对象负责注册JS方法,设置处理接收JS方法的代理,代理遵守WKScriptMessageHandler,实现捕捉到JS消息的回调方法,详情可以看第一步中对这两个类的介绍。
1 | //这个类主要用来做native与JavaScript的交互管理 |
- OC调用JS
1 |
|
五、本地HTML文件的实现
由于示例Demo的需要以及知识有限,我用仅知的HTML、CSS、JavaScript的一点皮毛写了一个HTML文件,比较业余,大神勿喷😁😁
小白想学习这方面的知识可以看这里: http://www.w3school.com.cn/index.html
我用MAC自带的文本编辑工具,生成一个文件,改后缀名,强转为.html文件,同时还需要设置文本编辑打开HTML文件时显示代码(如下图),然后编辑代码。
详情请前往我的Github:WKWebView的使用
如果我WKWebView使用的总结没帮到你,你也可以看看下面几篇文:
https://www.jianshu.com/p/833448c30d70
https://www.jianshu.com/p/4fa8c4eb1316
https://www.jianshu.com/p/91cfe58c032d