iOS 13 UIWebView將被棄用麸拄,以至于以后的項目都需要做WKWebView適配谅猾。
UIWebView 自適應(yīng)高度非常之簡單,設(shè)置代理協(xié)議 UIWebViewDelegate逻澳。
- (void)webViewDidFinishLoad:(UIWebView*)webView{
//直接使用 webView.scrollView.contentSize.height; 即可
}
但是WKWebView 傅寡,設(shè)置代理協(xié)議 WKNavigationDelegate侦鹏。
-(void)webView:(WKWebView*)webView didFinishNavigation:(WKNavigation*)navigation {
//直接使用 webView.scrollView.contentSize.height; 高度不準(zhǔn)確
}
image
打印一下俊抵,如上圖所示册赛,高度異常钠导。
為了方便高度適配,我特別做了個相關(guān)的封裝森瘪。獲取webView.scrollView.offsetHeight & offsetWidth
獲取寬高是為了根據(jù)屏幕寬度或者一定的比例進(jìn)行 高度適配牡属,等比顯示更讓人賞心悅目。
直接上代碼:
+ (void)wkWebViewAdapter:(WKWebView*)webView Finished:(void(^)(CGFloatwidth,CGFloatheight))block;
+(void)wkWebViewAdapter:(WKWebView*)webView Finished:(void(^)(CGFloat,CGFloat))block {
dispatch_group_t group = dispatch_group_create();
__blockCGFloattW =0.0,tH =0.0;
dispatch_group_enter(group);
//scrollHeight scrollWidth
[webViewevaluateJavaScript:@"document.body.scrollHeight" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
tH = [resultfloatValue];
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
[webViewevaluateJavaScript:@"document.body.scrollWidth" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
tW = [resultfloatValue];
dispatch_group_leave(group);
}];
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
if(block) {
block(tW,tH);
}
});
}
拷貝即用扼睬。
使用方法:
image
可自行擴(kuò)展:
[DLHeloper wkWebViewAdapter:webViewFinished:^(CGFloatwidth,CGFloatheight) {
CGFloat contentW =WIDTH-AdapterW(50); //展示寬度
CGFloat scale = contentW/width; //<頁面寬度/展示寬度>
self.webHeight = height *scale +AdapterW(50); //webView高度
self.web.scrollView.contentSize = CGSizeMake(contentW, self.webHeight);
[self.tableView reloadRow:0 inSection:1 withRowAnimation:UITableViewRowAnimationNone];
}];