Swift UITableView自动高度

时间:2018-08-31 11:51:44

标签: ios swift uitableview autolayout constraints

我有一个设计,其中UITableView与其他内容一起位于UIScrollView中,并且内容与表格数据一起滚动。这意味着该表已被禁用滚动,并且已拉伸到完整大小。

我正在使用自动布局,表格具有高度限制,设置为一些默认值。

然后我覆盖了viewWillLayoutSubviews方法:

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    if (self.itemTableView.contentSize.height > 0) {
        self.itemTableViewHeightConstraint.constant = self.itemTableView.contentSize.height
    }
}

有了这种方法,当我从REST加载数据后调用self.itemTableView.reloadData()时,高度约束设置为表内容的高度,这很棒。

这过去在许多项目中都对我有用,但是由于某种原因,它在最新的Swift 4中没有起作用。是否有所改变?为什么tableView reloadData()方法不调用viewWillLayoutSubviews()?

1 个答案:

答案 0 :(得分:0)

问题是tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)在返回行之前没有调用self.view.setNeedsLayout()。