前言
当时觉得这挺简单的,无论是获取WKWebView的ScrollView的内容高度还是调用JS,但是后面很容易出现网页高度获取不完的情况
解决思路
KVO监听scrollView.contentSize
实现
[self.webView addObserver:self forKeyPath:@"scrollView.contentSize" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"DJWebKitContext"];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
if([keyPath isEqualToString:@"scrollView.contentSize"])
{
CGFloat webViewContentHeight = self.webView.scrollView.contentSize.height;
if (webViewContentHeight != 50) {
CGRect frame = self.webView.frame;
frame.size.height = webViewContentHeight;
self.webView.frame = frame;
[self.webView sizeToFit];
self.height = self.webView.maxY + 10;
// 刷新自身高度
if (self.delegate && [self.delegate respondsToSelector:@selector(mouoDiaryDetailHeaderViewWebDidFinish)]) {
[self.delegate mouoDiaryDetailHeaderViewWebDidFinish];
}
}
}
}
- (void)dealloc{
[self.webView removeObserver:self forKeyPath:@"scrollView.contentSize" context:@"DJWebKitContext"];
}