首页投稿(暂停使用,暂停投稿)iOS OC 学习手册

WkWebView 详解(js交互、进度条、刷新、左右滑动)

2016-07-16  本文已影响5256人  孤独的剑客

WKWebView 是苹果在 iOS 8 中引入的新组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。它的优点在于占用更少的内存,处理速度更快。不过有点一点不像webview每次打开网页没有缓存,如果用户要配置一些个人的信息在请求里面,需要配置:
WKWebViewConfiguration 这个类。

js交互

<p></p><pre><code>
// js配置

    WKWebViewConfiguration*config=[[WKWebViewConfiguration alloc] init];
    // 设置偏好设置
    config.preferences = [[WKPreferences alloc] init];
    // 默认为0
    config.preferences.minimumFontSize = 10;
    // 默认认为YES
    config.preferences.javaScriptEnabled = YES;
    // 在iOS上默认为NO,表示不能自动通过窗口打开
    config.preferences.javaScriptCanOpenWindowsAutomatically = NO;
    config.userContentController = [[WKUserContentController alloc] init];
    
    // 注入JS对象名称AppModel,当JS通过AppModel来调用时,
    // 我们可以在WKScriptMessageHandler代理中接收到
    [config.userContentController addScriptMessageHandler:self name:@"MModel"];
    _wkWebView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];

</code></pre>

进度条

<p></p><pre><code>
// 计算wkWebView进度条

}
</code></pre>

刷新

<p></p><pre><code>
// 增加拉刷新

MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(onHeader)];
[header setTitle:@"下拉刷新" forState:MJRefreshStatePulling];
header.lastUpdatedTimeLabel.hidden = YES;
_wkWebView.scrollView.mj_header = header;

</code></pre>

左右滑动

<p></p><pre><code>
// 浏览器内左右滑动

_wkWebView.allowsBackForwardNavigationGestures = YES;

</code></pre>

[下载地址]https://git.oschina.net/mrj_mrj/WkWebView.git

上一篇下一篇

猜你喜欢

热点阅读