计算高度的时候很多用了kvo不停刷新高度,我使用的时候会导致tableview有抖动的不好效果,琢磨了很久发现了一个只一次就可以准确计算的方法
//创建属性
#define WEAKSELF typeof(self) __weak weakSelf = self;
@property (assign, nonatomic)CGFloat scrollWidth;
- (void)webView:(WKWebView*)webView didFinishNavigation:(null_unspecified WKNavigation*)navigation
{
//
WEAKSELF;
[webView evaluateJavaScript:@"document.body.scrollWidth" completionHandler:^(id _Nullable result,NSError *_Nullable error) {
//获取页面宽度
//在全局属性定义一个宽度
weakSelf.scrollWidth= [result doubleValue];
NSLog(@"scrollWidth 即为所求:%ff", weakSelf.scrollWidth);
[webView evaluateJavaScript:@"document.body.scrollHeight"completionHandler:^(id _Nullable result,NSError*_Nullable error) {
//获取页面高度
CGFloat scrollHeight = [result doubleValue];
//计算出缩放比,屏幕宽除以webview宽
CGFloat ratio = CGRectGetWidth(self.webView.frame) /weakSelf.scrollWidth;
//此处就能求出页面缩放比例后的高度
//取到的高度在乘以缩放比即可得到准确高度
self.webHeightNum= scrollHeight*ratio;
}];
}];
}
网友评论