我创建一个带有500 p标签的html字符串,其中包含时间戳
我使用UIWebView
和WKWebView loadHTMLString:baseURL:
来加载它,wkWebView
比UIWebVIew
慢 50%。UIWebView:0.1681529879570007
WKWebView:0.3913570046424866
。为什么呢?
UserPasswordCredential
答案 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]