美文网首页
UIWebView和WKWebView使用(一)

UIWebView和WKWebView使用(一)

作者: 2897275c8a00 | 来源:发表于2017-07-25 16:07 被阅读47次

    Copyright © 2017年ZaneWangWang. All rights reserved.


    一.UIWebView和WKWebView介绍

           UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。

    1.自测加载阿里巴巴网页能存占有对比如下图:

    使用WKWebView加载阿里巴巴网页前 使用WKWebView加载阿里巴巴网页后 使用WKWebView加载阿里巴巴网页返回后

    使用WKWebView加载网页后内存变化不大,使用WKWebView加载网页返回后内存变化也不大

    使用UIWebView加载阿里巴巴网页前 使用UIWebView加载阿里巴巴网页后 使用UIWebView加载阿里巴巴网页返回后

    可以看出到这里使用UIWebView加载阿里巴巴网页导致内存飙升,返回后内存并没有很有效的♻️。

    2.WKWebView相比UIWebView的其他优势如下几点:

    a>.更多的支持HTML5的特性

    b>.官方宣称滚动屏率高达60fps

    c>.内置手势

    d>.和系统Safari相同的JS引擎

    e>.增加加载进度属性:estimatedProgress(比较常用)

    f>.将UIWebViewDelegate和UIWebView进行拆分细化,了解更多查看官方文档

    二.UIWebView和WKWebView使用

    1.创建对比

    UIWebView的创建

    UIWebView *webView = [[UIWebView alloc] init];//直接创建,js交互基本也不需要设置什么

    WKWebView的创建

    WKWebView *wkWebView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuretion]; //需要传一个WKWebViewConfiguration的对象

    注意:要给configuretion进行如下设置要不然js交互不能进行

    configuretion.preferences.javaScriptCanOpenWindowsAutomatically = YES;

    2.加载方法对比

    a>.加载网页都是调用loadRequest:方法,没有什么不同,但是性能上边也说过,当然还是WKWebView性能要好

    b>.加载h5字符串都是调用loadHTMLString:baseURL:方法

    这里需要注意如果后台返回的h5字符串没有head,加载出来是没有适配的,显示不完全需要自己给h5字符串添加如下操作:

    NSString *htmls = [NSString stringWithFormat:@" \n"                                  " \n"                                  ""                                  ""

    "window.onload = function(){\n"

    "var $img = document.getElementsByTagName('img');\n"

    "for(var p in  $img){\n"

    " $img[p].style.width = '100%%';\n"

    "$img[p].style.height ='auto'\n"

    "}\n"

    "}"

    "%@"                                  ""                                  "",h5Str];

    在加载完成的代理方法中做一个如下的高度适配

    - (void)webViewDidFinishLoad:(UIWebView *)webView

    {

    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];

    webView.contentSize = CGSizeMake(webView.frame.size.width,height);

    }

    相关文章

      网友评论

          本文标题:UIWebView和WKWebView使用(一)

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