美文网首页
从 UIWebView 到 WKWebView

从 UIWebView 到 WKWebView

作者: 胡同里敲代码 | 来源:发表于2015-12-30 08:36 被阅读398次

    引言

    UIWebView 和 WKWebView 的区别

    WKWebView 更快(占用内存可能只有 UIWebView 的1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate 中的方法。
    想要了解更多关于 WKWebView 的特性的,可以自行百度,这里你可以简单地把它当做是轻量级的 UIWebView。

    为什么现在是时候从 UIWebView 迁移到 WKWebView 了:

    到目前为止,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%,iOS 7 及更早版本是 6.66%,而剩下的6.66% 应该大部分都是对手机使用极度不频繁的人。所以从现在开始,再开发 App 只兼容 iOS 8 和 iOS 9 两个版本就可以了,除非你对你的产品覆盖率有非常高的要求。WKWebView 是 iOS 8 之后才有的 WebKit 中的内容,所以之前我们要同时兼容 iOS 7 和 iOS 8 的时候,可以推辞说 UIWebView 和 WKWebView 一起做太麻烦了,现在可没有理由拒绝新东西了。

    正文

    常用代理方法

    在 WKWebView 中,UIWebViewDelegate 与 UIWebView 被重构成了14类与3个协议,下面给出一些在 UIWebView 中常用的方法的 WKWebView 版本。

    //准备加载页面
    UIWebViewDelegate - webView:shouldStartLoadWithRequest:navigationType
    WKNavigationDelegate -webView:didStartProvisionalNavigation:
    
    //已开始加载页面,可以在这一步向view中添加一个过渡动画
    UIWebViewDelegate - webViewDidStartLoad:
    WKNavigationDelegate - webView:didCommitNavigation:
    
    //页面已全部加载,可以在这一步把过渡动画去掉
    UIWebViewDelegate - webViewDidFinishLoad:
    WKNavigationDelegate - webView:didFinishNavigation:
    
    //加载页面失败
    UIWebViewDelegate - webView:didFailLoadWithError:
    WKNavigationDelegate - webView:didFailNavigation:withError:
    WKNavigationDelegate - webView:didFailProvisionalNavigation:withError:
    

    以上方法分别存在于 UIWebViewDelegate 和 WKNavigationDelegate 中。
    如果你之前只是用到了以上列出的 UIWebViewDelegate 中的几个方法,那么只是简单地换一个方法名,让你的 ViewController 继承 WKNavigationDelegate ,继续用就可以了。想要更多内容可以自己用 cmd键+鼠标左击『WKNavigationDelegate』通过 Xcode 查看。
    要注意的是 webview.delegate = self 需要改写为 webview.navigationDelegate = self。

    相关文章

      网友评论

          本文标题:从 UIWebView 到 WKWebView

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