我想在我的项目中计算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,并且尝试使用诸如 clientHeight
, offsetHeight
,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)和大小(宽度,高)。
。因此,我认为您只需要定位界限而不是其框架即可。