iOS在UITableViewCell上加载UIWebView

UITableView本身是可以滑动的,UIWebView也是可以滑动的,不可能关闭掉tableView的滑动效果,必然要关闭掉webView的滑动效果,即:

webView.scrollView.scrollEnabled = NO;

这样以来,webView加载的内容高度就至关重要了,只有知道了webView加载的内容高度,就可以动态的修改cell的高度。在webView完成加载的协议方法里,获取内容高度,修改webView的frame,并刷新tableView。

#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    //加载完毕,计算webView的高度,刷新tableView
    height = [[webView stringByEvaluatingJavaScriptFromString:
               @"document.body.scrollHeight"] floatValue];
    self.webView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, height);
    [_tableView reloadData];
}

cell里添加webView

  • 适合用于一次性加载完毕的,不适用于那种可以上拉加载的,譬如https://wap.baidu.com这种可以无限加载的,因为已经关闭掉webView的滑动效果了,无法进行继续加载。
  • 适合加载轻量级的,信息量小的,不适合加载信息量过大的,容易出现卡顿不流畅的现象。

推荐阅读更多精彩内容