iOS AutoLayout可自动调整整个表格的高度(不是单元格!)

时间:2018-10-01 13:45:52

标签: ios swift uitableview uiscrollview

我正在创建一个包含非常复杂的滚动视图(视图,表格,视图,图像等)的iOS应用,我很好奇:我可以使用“自动布局”创建一个自定义表格吗?

我想要的是:如果表包含三行,则表的高度等于这三行,但是如果表中有50行,则表的高度不会超过十行。

我查看了约束“高度等于或小于XXX”,但显然不起作用。

1 个答案:

答案 0 :(得分:1)

几年前,我在this answer中解释了如何做。答案在Objective-C中。将代码转换为Swift很简单,但我会为您完成:

制作UITableView的子类。在您的子类中,覆盖intrinsicContentSize

class MyTableView: UITableView {
    override var intrinsicContentSize: CGSize {
        layoutIfNeeded()
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }
}

如果您在初始设置后修改了表格视图中的行数,则应将表格视图告知invalidateIntrinsicContentSize(),例如,在调用reloadData(),{{1 }}等。或者您可以在endUpdates()中覆盖这些方法以也自动调用MyTableView