在tableview的headerView中添加webView,webView自适应高度
最近在项目中需要添加一个webView加载的页面,下面显示的是对这个webView所显示的内容的一个评论列表 ,列表要根据后台加载过来的HTML自适应的变化高度,tableview的cell在webView的下面显示,显示的效果
1.设置webView ,初始的高度设置为0.5 ,设置为tableHeaderView为webView,添加了一个观察者,监控webView 的contentSize的变化
_myWebView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 0.5)]; _myWebView.delegate = self; _myWebView.scrollView.scrollEnabled = NO; _myWebView.scrollView.showsHorizontalScrollIndicator = NO; [_myWebView sizeToFit]; _myWebView.scrollView.bounces = NO; [self.myWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; _myTableView.tableHeaderView = _myWebView;
2.在observer中的方法,通过获取到整个webView的内容,修改他的frame
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"contentSize"]) { webViewH = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue]+15; CGRect newFrame = self.myWebView.frame; newFrame.size.height = webViewH; NSLog(@"现在的高度===%f",webViewH); self.myWebView.frame = newFrame; self.myTableView.tableHeaderView = self.myWebView; } }
3.最后也别忘记释放观察者
-(void)dealloc{ [self.myWebView.scrollView removeObserver:self forKeyPath:@"contentSize"]; }
握不住的沙,干脆扬了它。