Swift UITableView自动高度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift UITableView自动高度相关的知识,希望对你有一定的参考价值。

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

答案

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

以上是关于Swift UITableView自动高度的主要内容,如果未能解决你的问题,请参考以下文章

swift 使用“自动布局”将UITableView的高度设置为其内容的高度

uitableviewcell中的swift uitableview,自动布局始终高度为0

如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

SnapKit swift实现高度自适应的新浪微博布局

iOS:在 Swift 中动态设置 UITableView 高度

swift UITableView 设置rowHeight