为什么当我得到tableviewcell的systemLayoutSizeFittingSize的结果总是为零?

问题描述:

tableview单元格非常复杂,有一个标签可以根据其内容动态更改。为什么当我得到tableviewcell的systemLayoutSizeFittingSize的结果总是为零?

MyTaskTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
[self configureCell:cell forIndexPath:indexPath withCellIndentifier:cellIdentifier]; 
[cell setNeedsUpdateConstraints]; 
[cell updateConstraintsIfNeeded]; 
NSLog(@"%f",[cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height); 

它显示在屏幕是正确的,所述内容是紧有内容的端线和电池的底部之间的空行。但高度始终输出0,我无法动态设置单元格高度,发生了什么?

+0

你不一定要计算高度,自动布局会照顾它。 – gabbler 2014-11-05 02:28:42

设置一个细胞视线的高度的唯一方法是用 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

如果你想拥有你所要做的事情在这个功能的动态高度。

+0

这不是唯一的方法。如果所有行都具有相同的高度,则只需设置表视图的“rowHeight”属性即可。 – rmaddy 2014-11-05 02:02:58

+0

是的,在这个函数中,我想获得[cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] .height所以我可以返回高度值。但值总是0,我很困惑 – leizh007 2014-11-05 02:03:31

+0

@maddy是的,但在这种情况下,单元格的高度不能动态变化。 – 2014-11-05 02:04:32