#TableViewCell 高度自适应 实现方式
- 设置单元格约束 在UITableViewCell子类中,添加约束,使子视图的边缘与contentView的边缘固定(pin)(最重要的是要有顶部和底部的边距约束)。
注意:不能将子视图的边缘设置成与cell的边缘固定,只能设置为与contentView的边缘固定!
确保每个子视图在垂直方向上的内容压缩阻力(compression resistance)和内容吸附性约束(content hugging constraints)没有被你添加的更高优先级的约束覆盖,以使得这些子视图的固有内容尺寸(intrinsic content size)来推动contentView的高度。
- 高度设置
- ios7 设置表格,heightForRowAtIndexPath方法
使用临时变量tempCell可以在 heightForRowAtIndexPath 中初始化
tempCell.setNeedsUpdateConstraints()
tempCell.updateConstraints()
tempCell.setNeedsLayout()
tempCell.layoutIfNeeded()
let height = tempCell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
return height + 1
- ios8 设置表格,不需要heightForRowAtIndexPath方法
tabview.estimatedRowHeight = 44.0
tabview.rowHeight = UITableViewAutomaticDimension
###rowHeight
//指定了一个所有cell都是44高度的UITableView,对于定高需求的表格,强烈建议使用这种方式保证不必要的高度计算和调用
tabview.rowHeight = 44
// 实现了这个方法后,rowHeight的设置将无效。所以,这个方法适用于具有多种cell高度的UITableView。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
###estimatedRowHeight 估算高度有两种方法
tabview.estimatedRowHeight = 44.0
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat