我有集合视图在单元格中我放了UITableView。 该表视图中的两个单元格包含UIWebView。 我需要动态计算UIWebViews的高度。
我接下来做了 - (void)webViewDidFinishLoad:(UIWebView *)webView
..... CGFloat webViewHeight = [[webView stringByEvaluatingJavaScriptFromString:@“document.body.scrollHeight;”] floatValue];
但问题是结果上的高度是使用此单元格从数组用于另一个对象时使用的内容计算的。我试着用下一个东西解决这个问题 [webView stringByEvaluatingJavaScriptFromString:@“document.body = \”\“;”]; 但它对我没有帮助。它在模拟器上工作正常但在设备上有问题。 +如果我在上传新的HTML之前加上延迟
[webView loadHTMLString:sourceHTML baseURL:nil];
我可以看到导致计算到错误高度的先前内容。
更新1 这是适合我的解决方案
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
frame = webView.frame;
frame.size = [webView sizeThatFits:CGSizeZero];
webView.frame = frame;
从框架我可以得到正确的高度。
答案 0 :(得分:0)
您可以通过在webViewDidFinishLoad
函数中调用这两个函数来重新加载单元格的高度而无需重新加载数据来解决此问题:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[tableView beginUpdates];
[tableView endUpdates];
}
如果您需要在初始数据加载之前知道高度,那么您唯一的选择是在初始化表之前加载UIWebView
。然后,您可以将预加载的UIWebView
分配给webView
中单元格的cellForRowAtIndexPath
属性。