方法一:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine;
// width 是label的宽度,固定宽度 计算高度
CGRect size = [_dataArray[indexPath.row] boundingRectWithSize:CGSizeMake(width, 1000) options:options attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil];
return size.size.height+25; // 多加的高度用于上下留白
}
方法二:(iOS8-iOS10)
self.tab.estimatedRowHeight = 50; // 先设置预估高度
self.tab.rowHeight = UITableViewAutomaticDimension;
// 需要将cell上的子控件约束好
// 不用实现heightForRowAtIndexPath方法
如果使用第二种方法后,cell没有自适应,需要看一下约束加的是否正确
参考:
UITableViewCell AutoLayout动态行高总结(兼容iOS7)
UITableViewCell 高度自适应
网友评论