我们在iOS开发过程中,不可避免的要使用web与tableView混用,同理略;本文介绍如何操作,废话不多说,直接上代码:
首先初始化webView:遵循代理UIWebViewDelegate
//webView初始化 - wsx注释
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, WSXScreenW, 1)];
_webView.delegate = self;
[_webView loadRequest:[NSURLRequest requestWithURL:NTURLString(self.model.url)]];
_wsxTV.tableHeaderView = _webView;
//监听webview
[self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
其次执行代理监听事件:
#pragma mark - 监听触发,得出UIWebView的height
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
if ([keyPath isEqualToString:@"contentSize"]) {
//通过JS代码获取webview的内容高度
self.webViewHeight = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
//更新webView的尺寸 - wsx注释
self.webView.frame = CGRectMake(0, 0, WSXScreenW, self.webViewHeight);
[_wsxTV reloadData];
}
}
要注意更新了webView的尺寸之后,要刷新tableView,让头部WebView的尺寸刷新;
作者将持续更新分享WebView相关内容技术,如有需要敬请关注;
荆轲刺秦王!