我正在创建一个包含非常复杂的滚动视图(视图,表格,视图,图像等)的iOS应用,我很好奇:我可以使用“自动布局”创建一个自定义表格吗?
我想要的是:如果表包含三行,则表的高度等于这三行,但是如果表中有50行,则表的高度不会超过十行。
我查看了约束“高度等于或小于XXX”,但显然不起作用。
答案 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
。