Swift UITableView自动高度

问题描述 投票:0回答:1

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

我正在使用autolayout并且表具有高度约束,设置为某个默认值。

然后我覆盖了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()?

ios swift uitableview autolayout constraints
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.