UIWebView
に任意の長さのHTML文字列をロードしてから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を呼んでいるのWebView取得するには、ペン先からのセルの「拡大図」をロードしています
:
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
に上記のコードによって更新されるアイヴァーです。ユーザーがセルを3回タップし、展開崩壊拡張し、少しスクロールすると、最終的に正しい高さになります。
メモリのみのUIWebView
オブジェクトを使用して高さを「プリロード」しようとしましたが、何らかの理由で正しい数値が返されませんでした。あなたは次の行を使用する必要があるのiOSのSafariの場合
アップル(UIWebViewドキュメント内)厳密にUITableViewでUIWebViewを使用しないように言った。 – makboney
ウェブビューを持つ複数のアプリを問題なくセルとして公開しました。 – Denis
同じ質問に対するより多くの、より良い回答がここにあります[1]。 [1]:http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebviewあなたは答えとしてこれを受け入れるべき –