我加载任意长度的HTML字符串转换为UIWebView
,然后将其在一个UITableViewCell
显示。我不希望这个UIWebView
独立滚动UITableView
,所以我必须调整其高度以适应内容。调整大小的UIWebView高度以配合内容
此UITableViewCell
也是可折叠的,当它处于折叠状态时不会显示UIWebView
。
问题的症结,我怎么知道这个高度是什么,这样我可以有heightForRowAtIndexPath
返回一个适当的值,并允许该表的外观和正确地滚动?
下面是一些示例代码:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0)
return 286;
if (indexPath.row == 1) {
if (analysisExpanded)
return analysisWebViewHeight + 39;
else
return 52;
}
if (sourcesExpanded)
return sourcesWebViewHeight + 39;
return 53;
}
很简单。 39是webview中单元格的一些标题内容的高度。
我加载从笔尖细胞的“扩展视图”,所以让我打电话viewForTag web视图:
UIWebView* sourcesWebView = (UIWebView*)[cell viewWithTag:1];
[sourcesWebView setBackgroundColor:[UIColor clearColor]];
[sourcesWebView loadHTMLString:placeholder baseURL:[NSURL URLWithString:@"http://example.com/"]];
sourcesWebViewHeight = [[sourcesWebView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] floatValue];
[sourcesWebView setFrame:CGRectMake(sourcesWebView.frame.origin.x, sourcesWebView.frame.origin.y, sourcesWebView.frame.size.width, sourcesWebViewHeight)];
sourcesWebViewHeight
是由上面的代码中cellForRowAtIndexPath
更新伊娃。如果用户点击三次,则展开 - 折叠 - 展开,然后进行一些滚动,最终获得正确的高度。
我尝试“预加载”,高度使用内存只有UIWebView
对象,但从来没有出于某种原因返回正确的数字。
Apple(在UIWebView文档中)严格地说不要在UITableView中使用UIWebView。 – makboney
我们已经发布了几个应用程序和网络视图作为单元没有任何问题 – Denis
同样的问题的更多和更好的答案也可以在这里找到[1]。 [1]:http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview –