UIWebView VS WKWebView加载本地html

时间:2016-11-09 02:28:17

标签: ios objective-c uiwebview webkit wkwebview

我创建一个带有500 p标签的html字符串,其中包含时间戳

我使用UIWebViewWKWebView loadHTMLString:baseURL:来加载它,wkWebViewUIWebVIew 50%UIWebView:0.1681529879570007 WKWebView:0.3913570046424866 。为什么呢?

UserPasswordCredential

4 个答案:

答案 0 :(得分:1)

WKWebView可以更快地显示来自字符串的html。但是,默认情况下有一个错误可使UIWebView更快,这是电话号码检测。

使用以下代码运行viewController,webView分别是UIWebView和WKWebView实例,并使其他所有内容保持相同,我发现WKWebView最多需要2秒钟加载,而UIWebView几乎立即加载。

webView.loadHTMLString(HtmlStringInstance, baseURL: nil)

我不是唯一找到这个的人:

但是,解决方案很容易:禁用WKWebView和poof的电话号码检测。你去那里。

答案 1 :(得分:1)

对我来说,创建静态变量以避免多次创建WKWebView起作用。 Objective-C示例:

- (WKWebView *)webHeaderView
{
    static WKWebView *_webHeaderView = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        if (!_webHeaderView)
        {
            WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
            _webHeaderView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
        }
    });

    return _webHeaderView;
}

答案 2 :(得分:0)

WKWebView渲染性能在WebGL游戏中很明显,并且运行UIWebView缺少的复杂JavaScript算法。

您可以在Github

中查看效果

答案 3 :(得分:0)

要使WKWebView更快,请禁用WKWebView的数据检测器。迅捷版:

let webViewCofig = WKWebViewConfiguration()
webViewCofig.dataDetectorTypes = []
webView = WKWebView(frame: view.frame, configuration: webViewCofig)

要启用特定数据检测器,请在设置dataDetectorTypes时将特定类型传递为.address,.link等:

config.dataDetectorTypes = [.address]