2

私はテーブルビューを持っています。私がやりたいのは、セルをクリックしたときにセルに Web ビューを追加することです。さらに、その特定のセルの高さも Web ビューのコンテンツに従って調整する必要があります。提案を歓迎します。

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 に答える