cell内嵌WKWebView时,有部分人通过代理中页面加载完成后调用的这个方法,如下
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
// CGFloat scrollHeight = webView.scrollView.contentSize.height;
}
来获取wkwebview的内容高度来设置cell高度。往往发现返回的高度不对。
通过kvo观察这个webView.scrollView.contentSize,你会发现上面的代理执行的方法返回的WKWebView的content并没有被修改。
所以就不要和uiwebview一样用这个方法了。
直接从JS里拿吧~
[webView evaluateJavaScript:@"document.body.offsetHeight;"completionHandler:^(id _Nullable result,NSError *_Nullable error) {
//获取页面高度,并重置webview的frame
}];
还有一点需要注意:最好等到webview加载完成在内嵌cell。不然坑好多~
网友评论
方法需要放到didFinishNavigation里面。
// 自适应屏幕宽度js
NSString *jSString = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript *wkUserScript = [[WKUserScript alloc] initWithSource:jSString injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
[userContentController addUserScript:wkUserScript];
在加载HTML的时候添加一下代码
// 手动改变图片适配问题,拼接html代码后,再加载html代码
NSString *myStr = [NSString stringWithFormat:@"<head><style>img{max-width:%f !important;}</style></head>", SCREEN_WIDTH - 20];
NSString *str = [NSString stringWithFormat:@"%@%@",myStr, html5代码字符串];
[self.informationWebView loadHTMLString:str baseURL:nil];
你问下你们前端,前端知道的。