我有一个表设置,显示来自Web的一些JSON数据。我在不同单元格中表示的数据中有不同类型的元素。基本上,我没有为每个单元格类型创建子类,但我宁愿在setObject / layoutSubviews / rowHeightForObject / etc方法中执行switch / case语句。现在我的问题是某些单元格包含一个UILabel,它根据文本的大小而变化。我现在所做的是,每次在rowHeightForObject方法中创建一个标签并计算它的大小,以确定该特定单元格的高度。有没有更有效的方法来做到这一点?
答案 0 :(得分:0)
您可以使用TTStyledTextTableCell
单元格。在TTTwitter示例项目中有一个很好的例子。 TTStyledTextTableCell接受带TTStyledText
的单元格项,并自动调整单元格的高度。
如果您使用的是自定义单元格类,则必须在单元格类中添加高度函数,并使用TTStyledText
代替UILabel
。
///////////////////////////////////////////////////////////////////////////////////////////////////
+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object {
TTStyledText* text = object;
if (!text.font) {
text.font = TTSTYLEVAR(font);
}
text.width = tableView.width - [tableView tableCellMargin]*2;
return text.height;
}
该函数计算表数据源中每个单元格的TTStyledText
类的高度。