Swift UITableView 自动高度

菲利普·卡拉斯

我有一个设计,其中 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()?

菲利普·卡拉斯

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章