基于文本改变表格视图单元格高度

时间:2012-10-26 12:04:35

标签: objective-c ios uitableview

我有一个包含几个单元格的表视图。填充单元格的文本是不可预测的(基于API请求的结果)。我想要做的是根据单元格的文本是否过于冗长来调整单元格的高度(例如,单元格为文本添加“...”)。

这样,无论结果/文本如何呈现到表格视图单元格中,总是会完全显示。

我不想实现heightForRowAtIndexPath,因为我必须实现很多代码才能实现。

更新:

当我说“我有很多代码要这样做”时,我的意思是我确实有很多代码解析请求并检查条件和执行算法,而且我有很多表观点。只是将那些东西移到了另一种方法而且我要去了!

你能指点我演示这个的任何资源,你知道怎么做吗?

2 个答案:

答案 0 :(得分:3)

您必须实现heightForRowAtIndexPath以改变表行的高度,但不一定需要很多代码来计算高度。

使用NSString:sizeWithFont:constrainedToSize来计算所需的单元格大小。

    //szMaxCell contains the width of your table cell, and the maximum height you want to allow
// strCellContents is an NSString containing the text to display

        CGSize szMaxCell = CGSizeMake (tableView.frame.size.width - 20,999);
        UIFont *font = [UIFont systemFontOfSize:12];    // whatever font you're using to display
        CGSize szCell = [strCellContents sizeWithFont:font constrainedToSize:szMaxCell lineBreakMode:UILineBreakModeWordWrap];

szCell包含标签的大小。你将使用这个大小来计算你的cellForRowAtIndexPath中你的UILabel的框架,以及你的heightForRowAtIndexPath。

答案 1 :(得分:1)

使用heightForRowAtIndexPath。它不应该是很多额外的代码。只需获得对填充单元格的对象的引用,检查该文本值的长度并返回所需的高度。这正是该委托方法的目的。