我想根据内容调整单元格的高度。我知道UITableViewDelegate允许你实现
- (CGFloat) tableView: (UITableView *) tableView
heightForRowAtIndexPath: (NSIndexPath *) indexPath {
return someHeight;
}
但我不想硬编码高度。有没有办法动态地做到这一点?
答案 0 :(得分:2)
您必须在该方法中输入一些代码来计算行内容的高度。究竟需要放置什么代码完全取决于您正在显示的内容类型。
例如,如果您正在显示可能包含多行的文本内容,那么您最终可能会使用NSString的sizeWithFont:
系列方法之一。
答案 1 :(得分:1)
如果您希望行具有不同的高度,则必须计算每一行的高度。
我遇到了这样的问题。我根据从json字符串解析的内容计算了行的高度。这就是我所做的。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// parse json
id qWeiboContent = [self.array objectAtIndex:indexPath.row];
float totalContentHeight;
QWeiboContentModel *model = [self getQWeiboContentFromJSON:qWeiboContent];
QWeiboContentModel *subModel = nil;
totalContentHeight += model.forOrComment.heightValue; // comment text view's height
totalContentHeight += model.content.heightValue; // content text view's height
totalContentHeight += 21 * 2; // 21 is height of a label
totalContentHeight += model.imageUrl.heightValue;
totalContentHeight += CELL_CONTENT_MARGIN;
if ([model.type isEqualToString:REPOSTED]) {
id qWeiboSource = [qWeiboContent objectForKey:@"source"];
subModel = [self getQWeiboContentFromJSON:qWeiboSource];
model.source = subModel;
totalContentHeight += subModel.forOrComment.heightValue;
totalContentHeight += subModel.content.heightValue;
totalContentHeight += 21 * 2;
totalContentHeight += subModel.imageUrl.heightValue;
totalContentHeight += CELL_CONTENT_MARGIN;
}
if (self.arrayQQWeibo == nil) {
self.arrayQQWeibo = [[NSMutableArray alloc]init];
}
[self.arrayQQWeibo addObject:model];
return totalContentHeight;
}