在iOS開(kāi)發(fā)中獲取webView高度是比較常用的寇窑,但是已知的幾種方法里或多或少都有點(diǎn)問(wèn)題。
下面是最終方案壶笼。
#pragma mark - WKNavigationDelegate
// 頁(yè)面加載完成之后調(diào)用
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
__weak typeof(self) weakSelf = self;
// 禁用用戶選擇
[self.webView evaluateJavaScript:@"document.documentElement.style.webkitUserSelect='none';"completionHandler:nil];
[self.webView evaluateJavaScript:@"document.documentElement.style.webkitTouchCallout='none';" completionHandler:nil];
[webView evaluateJavaScript:@"document.body.scrollWidth" completionHandler:^(id _Nullable result,NSError *_Nullable error) {
//獲取頁(yè)面寬度
//在全局屬性定義一個(gè)寬度
weakSelf.scrollWidth= [result doubleValue];
// NSLog(@"scrollWidth 即為所求:%ff", weakSelf.scrollWidth);
[webView evaluateJavaScript:@"document.body.scrollHeight"completionHandler:^(id _Nullable result,NSError*_Nullable error) {
//獲取頁(yè)面高度
CGFloat scrollHeight = [result doubleValue];
//計(jì)算出縮放比沉馆,屏幕寬除以webview寬
CGFloat ratio = CGRectGetWidth(self.webView.frame) /weakSelf.scrollWidth;
//此處就能求出頁(yè)面縮放比例后的高度
//取到的高度在乘以縮放比即可得到準(zhǔn)確高度
double webHeight = scrollHeight * ratio;
[weakSelf.webView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.top.mas_equalTo(10);
make.right.bottom.mas_equalTo(-10);
make.height.mas_equalTo(webHeight);
}];
[weakSelf.view setNeedsLayout];
[weakSelf.view layoutIfNeeded];
}];
}];
}