我试图在TableView中显示每个用户的评论。评论可以通过图像来表达。
通常我们可以将UITableViewCell的高度设置为heightForRowAtIndex。但是我希望每个单元格根据聊天进行扩展,如果图像包含图像高度。
如何根据其内容增加UITablViewCell的高度?
答案 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);
}
如果您有定制类别,那么您必须通过自定义细胞来管理您的标签,因为您扩展了您的细胞超越。您可以单独在细胞类中进行,但可以使用您的实际高效电池进行同步。当你设定它的价值时,你必须在定制类别中通过。