引言:在实际项目开发中,可能会遇到需要获取webview内容高度的情况,在这里小编提供几种获取的方式
1.使用KVO观察者模式
- (void)webViewDidFinishLoad:(UIWebView *)webView API_DEPRECATED("No longer supported.", ios(2.0, 12.0))
{
//KVO监听
[webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
}
在webview加载完成的代理方法中使用KVO监听webview内容改变情况。
在下面方法中获取高度。@"contentSize"是上个方法中的KeyPath
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
if ([keyPath isEqualToString:@"contentSize"]) {
// 获取webview高度
CGSize fittingSize = [self.webview sizeThatFits:CGSizeZero];
CGFloat webviewHeight = fittingSize.height;
NSLog(@"高度:%f",webviewHeight);
}
}
sizeThatFits 这个方法后面的参数小编没搞懂具体有什么作用,因为发现后面参数值不同好像对获取的高度值没什么影响,有知道的朋友麻烦帮忙解下惑,不甚感激。
2.通过获取HTML body高度
这种方式比较简单直接
- (void)webViewDidFinishLoad:(UIWebView *)webView API_DEPRECATED("No longer supported.", ios(2.0, 12.0))
{
CGFloat webviewHeigth = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
NSLog(@"高度1:%f",webviewHeigth);
}