如何计算WKWebView的高度



我想在我的项目中计算wkwebview的高度,但是总是没有用,我怎么能得到它?

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation     *)navigation{
    [webView sizeToFit];
    _height = webView.frame.size.height ;
}

您可以使用关键值观察

 - (void)viewDidLoad {
...
[self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
}

- (void)dealloc
{
[self.webView.scrollView removeObserver:self forKeyPath:@"contentSize" context:nil];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                  ofObject:(id)object
                    change:(NSDictionary *)change
                   context:(void *)context
{
if (object == self.webView.scrollView && [keyPath isEqual:@"contentSize"]) {
    // we are here because the contentSize of the WebView's scrollview changed.
    UIScrollView *scrollView = self.webView.scrollView;
    NSLog(@"New contentSize: %f x %f", scrollView.contentSize.width, scrollView.contentSize.height);
}
}

这将节省JavaScript的使用,并使您在所有更改中保持循环。

我已经尝试了滚动视图kvo,并且尝试使用诸如 clientHeightoffsetHeight,etc等的内容上评估文档上的javascript ...

最终对我有用的是:document.body.scrollHeight。或使用最高元素的scrollHeight,例如容器div

我会听loading WKWebView属性使用KVO更改,并且完成加载后,我确定了这样的高度:

[self.webview evaluateJavaScript: @"document.body.scrollHeight"
                       completionHandler: ^(id response, NSError *error) {
            NSLog(@"Document height: %@", response);
}];

uiview的边界是矩形,相对于其自己的坐标系(0,0)表示为位置(x,y)和大小(宽度,高)。Uiview的框架是矩形,相对于监督图所包含的位置(x,y)和大小(宽度,高)。

因此,我认为您只需要定位界限而不是其框架即可。

最新更新