主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

UIWebView和WKWebView的区别及使用

iOS开发 随风 257℃ 0评论

UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。下面列举一些其它的优势:
1.更多的支持HTML5的特性
2.官方宣称的高达60fps的滚动刷新率以及内置手势
3.Safari相同的JavaScript引擎
4.将UIWebViewDelegate与UIWebView拆分成了14类与3个协议(官方文档说明)
5.另外用的比较多的,增加加载进度属性:estimatedProgress

UIWebView的用法

1.基本用法

2.代理方法

3.Native调用JS中的方法

我们可以调用
– (nullable NSString )stringByEvaluatingJavaScriptFromString:(NSString )script;
函数进行js调用。

js代码不一定要在js文件中预留,也可以在代码中通过字符串的形式进行调用,比如下面:

4.JS中调用Naitve的方法
具体让js通知native进行方法调用,我们可以让js产生一个特殊的请求。可以让Native代码可以拦截到,而且不然用户察觉。业界一般的实现方案是在网页中加载一个隐藏的iframe来实现该功能。通过将iframe的src指定为一个特殊的URL,实现在- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType;方案中进行拦截处理。对应的js调用代码如下:

比如我们在js代码中,调用一下两个js方法:

当你触发以上方法的时候,就会进入webview的代理方法中进行拦截。

WKWebView的用法

1.基本用法

2.代理方法

3.Native调用JS中的方法
WKWebView提供的调用js代码的函数是:

比如我们在加载的HTML文件中有如下js代码:

我们可以调用如下代码进行js的调用:

同UIWebView一样,我们也可以通过字符串的形式进行js调用。

4.JS中调用Naitve的方法
除了和UIWebView加载一个隐藏的ifame之外,WKWebView自身还提供了一套js调用native的规范。
我们可以在初始化WKWebView的时候,给他设置一个config参数。

我们在js可以通过NativeMethod这个Handler让js代码调用native。
比如在js代码中,我新增了一个方法

触发以上方法的时候,会在native以下方法中进行拦截处理。

转载请注明:怼码人生 » UIWebView和WKWebView的区别及使用

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址