UITableView:自适应单元格高度

时间:2010-09-08 13:10:32

标签: iphone objective-c

我想了解自适应细胞高度的最佳策略。单元格首先知道它们在cellForRowAtIndexPath方法中创建时的高度(它们包含一些文本框和图像)。 我的想法是将单元格的高度存储在NSMutableDictionary中,并带有单元格标识键。 问题是heightForRowAtIndexPath:方法在创建单元格之前被称为,并且只有这样。

你通常如何管理?

3 个答案:

答案 0 :(得分:6)

如果要调整单元格大小(即调用heightForRowAtIndexPath方法),可以使用空的beginUpdates - endUpdates块:

[table beginUpdates];
[table endUpdates];

这将迫使UITableView更新其几何体并更新单元格高度

答案 1 :(得分:0)

如果要调整单元格的高度,请使用UITableViewDelegate中的 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。 例如,将单元格的高度存储到NSArray中,并通过indexPath参数获取它。

答案 2 :(得分:0)

我现在执行以下操作:我直接从字符串高度计算高度,我使用:

-(CGFloat) estimateCellheightFromText:(NSString*) text andFont:(UIFont*)ffont widthConstraint:(CGFloat)width andLineBreakMode:(UILineBreakMode)lbMode{
CGSize stringSize = [text sizeWithFont:ffont constrainedToSize:CGSizeMake(width, 9999) lineBreakMode:lbMode]; return stringSize.height;}