我有一个tableview,我想要做的是在单击单元格时在单元格上添加webview,加上特定单元格的高度也应根据webview内容进行调整。 建议欢迎。
答案 0 :(得分:2)
这取决于您拥有Web视图的单元格数。理想情况下,您必须等待Web视图渲染,然后更改Web视图和单元格的高度
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *string = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"body\").offsetHeight;"];
CGFloat height = [string floatValue] + 8;
CGRect frame = [_webView frame];
frame.size.height = height;
[_webView setFrame:frame];
//Store the height in some dictionary and call [self.tableView beginUpdates] and [self.tableView endUpdates]
}
当然,这会导致性能下降,但对于单个单元格而言,这并不错。如果有多个单元格具有Web视图,请使用 Ishank的方法。但是,如果您的字符串包含像<td>
这样的div元素,则该方法将返回误导性高度。
答案 1 :(得分:0)
在代表 - cellForRowatIndex:
中,您可以这样做 -
NSString *HtmlStr = [NSString stringWithFromat:@"<div style=\"font-family:\"Times New Roman\";font-size:18px;\">%@</div>",@"YOUR_String_DATA"];
[cell.webView loadHTMLString:HtmlStr baseURL:nil];
使用此< - p>查找内容大小(在您的情况下为高度)
CGSize aSize = [@"YOUR_String_DATA" sizeWithFont:@"Times New Roman" minFontSize:18.0f actualFontSize:18.0f forWidth:TableViewCellWidth lineBreakMode:lineBreakMode];
cell.webView.frame = CGRectMake(0,0,aSize.width,aSize.height);
此外,在heightForRowatIndex:
委托方法中,您必须以某种方式返回高度aSize.height