2016-10-07 18 views
0

私はUITableViewのセルを持っています。そのセルは内容に応じて可変サイズになります(潜在的には数行のテキスト)。可変高さ内のコンテンツに基づいてUIWebViewの高さを判断する方法UITableView?

セルをレイアウトする前にheightForRowAtIndexPathが呼び出されているようだから、文字列の[NSString sizeWithFont]を呼び出して正しい高さを推測するだけです。セルにテキストを配置した後に高さを設定するより良い方法はありますか、正確にどのサイズにするかというアイデアがありますか?

各セルに異なる(静的に読み込まれた)コンテンツを持つUIWebViewが含まれています。コンテンツに基づいて適切な高さを計算する方法がわかりません。これを行う方法はありますか?私はこのようなことを試してみた:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
     WebViewCell *cell = (WebViewCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath]; 
     [cell setNeedsLayout]; 
     [cell layoutIfNeeded]; 
     return cell.bounds.size.height; 
    } 

細胞自体が単純UIWebViewを含むUITableViewCellでペン先からロードされます。 (セルがちょうどhtmlコンテンツの中で最大のものに調整されていれば、それはうまくいくかもしれませんが、可変の高さはより良いでしょう)。

+1

"heightForRowAtIndexPath"に "boundingRect"を使用して文字列の高さを動的に検索し、その高さを返します。それが動作することを願って – Janmenjaya

+1

このチュートリアルを使用してhttp://www.samrayner.com/posts/dynamic-tableview-cellsを実行します。私はすべてのセルでUIWebViewのアイデアが繰り返されるのを好きではありません。 UIWebViewは、多くのメモリを消費します(https://forums.developer.apple.com/thread/25526)。 –

+0

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell \t * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; return cell.bounds.size.height; } –

答えて

1
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath { 
     UITableViewCell *cell = [self tableView: tableView cellForRowAtIndexPath: indexPath]; 
     return cell.bounds.size.height; 
} 
関連する問題