2

我有一个表格视图,我想做的是在单击单元格时在单元格上添加 webview,并且该特定单元格的高度也应该根据 webview 内容进行调整。欢迎提出建议。

4

2 回答 2

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 的方法。但是,如果您的字符串包含 div 元素,例如<td>该方法将返回一个误导性的高度。

于 2013-04-22T11:24:00.577 回答
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];

使用此查找内容大小(在您的情况下为高度)-

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

于 2013-04-22T08:34:02.770 回答