动态更改UITableViewCell的高度

时间:2013-12-07 05:47:40

标签: objective-c cocoa-touch uitableview

我试图在TableView中显示每个用户的评论。评论可以通过图像来表达。

通常我们可以将UITableViewCell的高度设置为heightForRowAtIndex。但是我希望每个单元格根据聊天进行扩展,如果图像包含图像高度。

如何根据其内容增加UITablViewCell的高度?

2 个答案:

答案 0 :(得分:1)

你仍然必须在heightForRowAtIndex:中进行,除了你必须动态确定身高。

我想象的是这样的事情:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CommentModel *comment = self.comments[indexPath.row];
    CGFloat height = [CommentTableViewCell heightForComment:comment];
    return height;
}

然后在你的CommentTableViewCell中,你有一个类方法,如:

// Calculates the height a CommentTableViewCell should be when configured with the given comment
+ (CGFloat)heightForComment:(CommentModel *)comment {
    // This part of the code will be very specific to your own project
    CGFloat height = BASE_HEIGHT;
    height += comment.image.size.height;
    height += comment.message.size.height;
    return height;
}

我知道此代码可能与您的代码库不匹配,但它应该让您大致了解可以实现目标的一种方式。

答案 1 :(得分:0)

如果您不具有定制细胞类别,请使用此代码。

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

         float PADDING = 0.5f; // USE FOR DIFFERNCE BETWEEN YOUR ENDING TEXT AND SEPERATOR
         UIImage *image =[UIImage imageNamed:@"test.png"]; // Some Image you want to put dynamically.
         NSString *text = @"Sometext That you want tro fill Dynamically";

         CGSize textSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:14.0f] constrainedToSize:CGSizeMake(270 , 1000)];
         return ((textSize.height+image.size.height+ PADDING * 3) + 30);
}

如果您有定制类别,那么您必须通过自定义细胞来管理您的标签,因为您扩展了您的细胞超越。您可以单独在细胞类中进行,但可以使用您的实际高效电池进行同步。当你设定它的价值时,你必须在定制类别中通过。