翻译@Auto Layout Guide(自动布局指南)


Advanced Auto Layout(自动布局进阶使用)

Working with Self-Sizing Table View Cells(Cell自动算高)

只需简单设置,就可以让自动布局计算UITableViewCell(以下简称Cell)的高度。

以往,Cell的高度由列表视图(UITableView)代理方法tableView:heightForRowAtIndexPath:返回。为了将Cell高度交给自动布局决定,必须设置列表视图属性rowHeightUITableViewAutomaticDimension。此外,还需要给列表视图属性estimatedRowHeight一个预先估算的行高。

  1. tableView.estimatedRowHeight = 85.0
  2. tableView.rowHeight = UITableViewAutomaticDimension

接下来,将所有内容放入Cell的contentView中,适用约束布局。类似于滚动视图的”Content View”,系统计算Cell的契合尺寸(Fitting Size),将其作为Cell高度。为此,contentView垂直方向上的约束链必须完整:所有垂直约束及内容高度之和,就是Cell的高度。对于内容来说,优先使用约束高度,其次使用固有高度。如果都没有,则高度为0pt。

图66

预估行高(Estimated Row Height)应尽量准确。滚动指示条的高度取决于这个值,如果偏差太大,会影响用户体验。

注意

Cell预设内容的位置(例如textLabeldetailTextLabel以及imageView)无法修改。

但以下操作是可以的:

  • 相对于contentView布局;
  • 相对于Cell本身布局;
  • 相对于预设内容布局。