在UITableViewCell上基于1个标签动态更改高度?

时间:2012-10-29 13:14:13

标签: ios uilabel uitableview

如何根据UITableViewCells中的内容量来扩展它们?在我的单元格中,我使用3个代表论坛的标签。标签名为“别名”,“日期”和“评论”。第三个标签注释,可以是任意数量的行。因此,我的单元格需要动态变化,具体取决于它在“comments”标签中的文本量(大小)。以下是我的相关代码:

- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ForumthreadCell";
UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

Feedback *item = [self.items objectAtIndex:indexPath.row];

UILabel *aliasLabel = (UILabel *)[cell viewWithTag:1];
UILabel *commentLabel = (UILabel *)[cell viewWithTag:2];
UILabel *dateLabel = (UILabel *)[cell viewWithTag:3];

[aliasLabel setText:item.alias];
[commentLabel setText:item.comment];
[dateLabel setText:[self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:(double)item.time]]];

commentLabel.numberOfLines = 0;
[commentLabel sizeToFit];

return cell;
}

在这个方法中,我应该根据commentLabel的高度设置tableViewCell的高度。唯一的问题是我不知道该怎么做?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (????) {

    return ????;
    //return [indexPath row] + 50;

}

return ????;
}

我需要那些试图查看我的代码的人的帮助,并举例说明如何使这项工作成功。毕竟,它只有一个标签....我已经看过几个教程但是没能使它工作... Thanx为你的时间和帮助。 这是一个带有一些旧代码的旧屏幕。这或多或少是论坛现在的样子:http://tinypic.com/view.php?pic=16h7me9&s=6

1 个答案:

答案 0 :(得分:0)

您需要的是一种计算使用特定字体呈现的文本大小的方法。幸运的是,UIKit通过NSString UIKit Additions中的各种sizeWithFont:方法为您提供了这一点。