在tableview的headerView中添加webView,webView自适应高度

Posted 蓝色的风1203

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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"];
}

  

  

  

 

以上是关于在tableview的headerView中添加webView,webView自适应高度的主要内容,如果未能解决你的问题,请参考以下文章

给tableView设置headerView时遇到的问题

iOS开发小技巧--TableView中headerView的循环利用,以及自定义的headerView

当我滚动 tableview 时,如何让 headerView 滚动(不停留在 tableview 的顶部)伴随 UItableViewCell

iOS tableView中section的headerView的位置

iOS 解决tableView中headerView头部视图不跟随tableView滑动的方法

tableView.headerView(forSection: 0) 的高度为零