如何使UITableView适合内容的大小

Yon*_*Yon 8 uitableview ios swift

我有一个UITableView(让我们称之为tbl_A)在一个表格视图单元格中,其高度是动态的并且设置为UITableViewAutomaticDimension.tbl_A的单元格高度也是动态的,我知道tbl_A的数据不会太多.所以我希望tbl_A被滚动禁用,其frame.size等于其内容大小.我试图设置tbl_A的frame.size.height = tbl_A.contentSize.height,遗憾的是,高度是错误的.

顺便说一句,我没有必要UITableView用来完成这项任务.我只是想以一种方式显示所有数据.有什么建议?

这是我想要实现的效果: 在此输入图像描述

Ema*_*mad 10

简单;)

override var intrinsicContentSize: CGSize {
    return contentSize
}
Run Code Online (Sandbox Code Playgroud)


de.*_*de. 6

基于@Emad 的回答,但如果 contentSize 发生变化,那么重要的补充是使内在内容大小无效。

class ContentWrappingTableView: UITableView {

  override var intrinsicContentSize: CGSize {
    return self.contentSize
  }

  override var contentSize: CGSize {
    didSet {
        self.invalidateIntrinsicContentSize()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 0

  1. 对于您的情况,您还可以使用scrollView。
  2. 在该滚动视图中,添加每个子单元格时,通过添加每个子单元格的高度(将变量作为引用高度)来跟踪每个子单元格
  3. 最后通过计算的高度(referenceHeight)设置滚动视图高度