我想在我的项目中像这样计算WKWebView的高度,但它总是没用,我怎么能得到它?
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
[webView sizeToFit];
_height = webView.frame.size.height ;
}
答案 0 :(得分:1)
您可以使用键值观察
- (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的使用,让您在所有更改中保持循环。
答案 1 :(得分:1)
我已经尝试了滚动视图KVO,我尝试使用clientHeight
,offsetHeight
之类的内容评估文档上的javascript ...
最终对我有用的是:document.body.scrollHeight
。或者使用最顶层元素的scrollHeight
,例如容器div
。
我使用KVO听取loading
WKWebview属性更改,当它完成加载时,我确定高度如下:
[self.webview evaluateJavaScript: @"document.body.scrollHeight"
completionHandler: ^(id response, NSError *error) {
NSLog(@"Document height: %@", response);
}];
答案 2 :(得分:0)
UIView的边界是矩形,表示为相对于其自身坐标系(0,0)的位置(x,y)和大小(宽度,高度)。 UIView的框架是矩形,表示为相对于它所包含的超视图的位置(x,y)和大小(宽度,高度)。
因此,我认为你只需要定位bounds.height而不是它的框架。