翻译@Auto Layout Guide(自动布局指南)
Advanced Auto Layout(自动布局进阶使用)
Working with Self-Sizing Table View Cells(Cell自动算高)
只需简单设置,就可以让自动布局计算UITableViewCell(以下简称Cell)的高度。
以往,Cell的高度由列表视图(UITableView)代理方法tableView:heightForRowAtIndexPath:返回。为了将Cell高度交给自动布局决定,必须设置列表视图属性rowHeight为UITableViewAutomaticDimension。此外,还需要给列表视图属性estimatedRowHeight一个预先估算的行高。
tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension
接下来,将所有内容放入Cell的contentView中,适用约束布局。类似于滚动视图的”Content View”,系统计算Cell的契合尺寸(Fitting Size),将其作为Cell高度。为此,contentView垂直方向上的约束链必须完整:所有垂直约束及内容高度之和,就是Cell的高度。对于内容来说,优先使用约束高度,其次使用固有高度。如果都没有,则高度为0pt。
预估行高(Estimated Row Height)应尽量准确。滚动指示条的高度取决于这个值,如果偏差太大,会影响用户体验。
注意
Cell预设内容的位置(例如textLabel,detailTextLabel以及imageView)无法修改。
但以下操作是可以的:
- 相对于contentView布局;
- 相对于Cell本身布局;
- 相对于预设内容布局。