Uitableview UIWebView在webview完成加载时高度不正确
我在单元格中放置了集合视图UITableView。 该表视图中的两个单元格包含UIWebView。 我需要动态计算UIWebView的高度。所以我下一步做什么Uitableview UIWebView在webview完成加载时高度不正确,uitableview,uiwebview,uicollectionview,uiwebviewdelegate,Uitableview,Uiwebview,Uicollectionview,Uiwebviewdelegate,我在单元格中放置了集合视图UITableView。 该表视图中的两个单元格包含UIWebView。 我需要动态计算UIWebView的高度。所以我下一步做什么 - (void)webViewDidFinishLoad:(UIWebView *)webView 。。。。。 CGFloat webViewHeight=[[webView stringByEvaluatingJavaScriptFromString:@“document.body.scrollHeight;“]floatValue
- (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;
从帧中,我可以得到正确的高度。您可以通过在
webViewDidFinishLoad
函数中调用这两个函数来解决此问题,以便在不重新加载数据的情况下重新加载单元格的高度:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[tableView beginUpdates];
[tableView endUpdates];
}
如果您需要在初始数据加载之前知道高度,那么您唯一的选择就是在初始化表格之前加载UIWebView
。然后将预加载的UIWebView
分配给cellForRowAtIndexPath
中单元格的webView
属性
您找到解决方案了吗?