我想了解自适应细胞高度的最佳策略。单元格首先知道它们在cellForRowAtIndexPath
方法中创建时的高度(它们包含一些文本框和图像)。
我的想法是将单元格的高度存储在NSMutableDictionary
中,并带有单元格标识键。
问题是heightForRowAtIndexPath:
方法在创建单元格之前被称为,并且只有这样。
你通常如何管理?
答案 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;}