Swift 如何获取UITableView内容大小?

Swift 如何获取UITableView内容大小?,swift,uitableview,Swift,Uitableview,我需要查找表视图内容大小,因为我需要根据行数增加表高度。我使用“表格视图自动标注”自动增加基于单元格内容的单元格高度。所以我习惯于在表视图完全加载后查找表内容大小,然后我们可以调整表视图大小 我使用下面的代码获取表视图内容大小 Print(tableview.contentSize) 但它给出了错误的大小。所以我研究了一些链接,然后发现了这个。在该链接中,您可以看到苹果公司表示,我们需要将估计的表格高度提到0,以获得正确的表格视图内容大小。但它又给出了错误的内容大小。比如说, 表视图加载5

我需要查找表视图内容大小,因为我需要根据行数增加表高度。我使用“表格视图自动标注”自动增加基于单元格内容的单元格高度。所以我习惯于在表视图完全加载后查找表内容大小,然后我们可以调整表视图大小

我使用下面的代码获取表视图内容大小

  Print(tableview.contentSize)
但它给出了错误的大小。所以我研究了一些链接,然后发现了这个。在该链接中,您可以看到苹果公司表示,我们需要将估计的表格高度提到0,以获得正确的表格视图内容大小。但它又给出了错误的内容大小。比如说,


表视图加载5行,内容大小高度为100.0,这意味着它只提供了80.0。我不知道如何找到确切的表视图内容大小。你能帮忙吗

当您有任何
UIView
继承
UIScrollView
时,您可以在
viewdilayoutsubview
下轻松获得更新的
contentSize

override func viewDidLayoutSubviews() {
    debugPrint("Updated Contensize \(tableView.contentSize)")
}

当您有任何
UIView
继承
UIScrollView
时,您可以在
viewdilayoutsubview
下轻松获得更新的
contentSize

override func viewDidLayoutSubviews() {
    debugPrint("Updated Contensize \(tableView.contentSize)")
}

您应该为表视图高度约束设置出口,并在UIViewController中重写updateViewConstraints()方法

override func updateViewConstraints() {
tableHeightConstraint.constant = tableView.contentSize.height
super.updateViewConstraints()
}


谢谢

您应该为表视图高度约束设置出口并在UIViewController中重写更新约束()方法

override func updateViewConstraints() {
tableHeightConstraint.constant = tableView.contentSize.height
super.updateViewConstraints()
}


谢谢

滚动视图(以及表视图)的内容大小与滚动视图的大小无关。包含滚动视图的视图控制器的
viewdilayoutsubviews
之后,内容大小不会更新。表视图的内容大小根据所有行、页眉和页脚的当前已知高度进行更新。它可以随时更改,与视图控制器的视图无关。@rmaddy是的,但是任何内容更改或任何新内容更新,您都可以看到它将反映在
viewDidLayoutSubviews
中,我不知道,但我仍在代码中使用它。我做错什么了吗?我需要在加载表视图后查找表vie内容大小。因此,目前我调用viewdide来查找表视图内容大小。它给出了错误的大小:(它肯定可以工作,正如我刚才所检查的。您应用了约束吗?滚动视图(以及表视图)内容大小与滚动视图的大小无关。在包含滚动视图的视图控制器的
viewdilayoutsubviews
之后,内容大小不会更新。表视图的内容大小会根据所有行、页眉和页脚的当前已知高度进行更新。这可以随时更改,与视图控制器的视图正在布局。@rmaddy是的,但任何内容更改或任何新内容更新,您都可以看到它将反映在
viewDidLayoutSubviews
中,我不知道,但我仍在代码中使用它。我做错了什么吗?我需要在加载表视图后查找表vie内容大小。因此,目前我调用viewDidAppear无法找到表视图内容大小。它给出了错误的大小:(正如我刚才所检查的那样,它肯定会起作用。您是否应用了约束?检查并观察use KVO with tableview.contentSize属性的可能重复项,并观察更改,您将获得准确的内容大小。检查并观察use KVO with tableview.contentSize属性的可能重复项,并观察更改,您将获得正确的内容大小。)确切的内容大小。