在iOS中,你可以使用Auto Layout定义TableViewCell的高度;但是,此特性默认没有开启。
一般来说,cell的高度是由tableView代理对象的tableView:heightForRowAtIndexPath:方法来决定的。要实现自定义尺寸的TableViewCell,你必须将tableView的rowHeight属性设置为UITableViewAutomaticDimension。你还需要给estimatedRowHeight属性赋一个值。一旦这两个属性都被设置后,系统就会使用Auto Layout来计算每一行的实际高度。
|
|
下一步,在TableViewCell的ContentView中布局相关内容。要定义cell的高度,你需要从ContentView的顶部到底部边界设置一个完整的约束和视图链来填满整个区域。如果你的视图中存在真实内容尺寸高度,系统便会使用这些值。如果没有,你就必须添加相应的高度约束,要么设置到视图上,要么就直接设置到ContentView自身。
此外,尽可能让估算的行高精确一些。系统计算的项目,比如滑动条的高度,是基于这个估算值的。估算值越精确,用户体验就会越连贯。
说明
当使用TableViewCell时,你不能改变预定义内容的布局(如textLabel、detailTextLabel和imageView属性)。
可支持如下约束:
- 相对于cell的ContentView来定位子视图的约束。
- 相对于cell的bounds来定位子视图的约束。
- 相对于预定义内容来定位子视图的约束。