【问题标题】:How to get UITableView Content size?如何获取 UITableView 内容大小?
【发布时间】:2019-06-23 07:40:00
【问题描述】:

我需要找到表格视图内容大小,因为我需要根据行数增加表格高度。我使用表格视图自动尺寸来自动增加基于单元格高度的单元格内容。所以我过去常常在表格视图完全加载后找到表格内容的大小,然后我们可以调整表格视图的大小。

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

  Print(tableview.contentSize)

但它给出了错误的尺寸。所以我研究了一些链接,然后我发现了这个https://forums.developer.apple.com/thread/81895。在该链接中,您可以看到 Apple 说我们需要将估计的表格高度提及为 0 以获得正确的表格视图内容大小。但它再次给出了错误的内容大小。例如,

表格视图加载 5 行,内容大小高度为 100.0,但它只给出 80.0。我不知道如何找到确切的表格视图内容大小。你能帮忙吗?

【问题讨论】:

标签: swift uitableview


【解决方案1】:

您应该为 tableView 高度约束 设置出口并覆盖 UIViewController 中的 updateViewConstraints() 方法。

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

}

谢谢

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 滚动视图(以及表格视图)的内容大小与滚动视图的大小无关。在包含滚动视图的视图控制器的viewDidLayoutSubviews 之后,内容大小不会更新。表格视图的内容大小根据所有行、页眉和页脚的当前已知高度进行更新。这可以随时更改,与视图控制器的视图布局无关。
    • @rmaddy 是的,但是任何内容更改或任何新内容更新,您都可以看到它会反映在viewDidLayoutSubviews 中,我不知道但我仍在我的代码中使用它。我做错了吗?
    • 我需要在表格视图加载后查找表格内容大小。所以目前我调用 viewDidAppear 来查找表视图内容大小。它给出了错误的大小:(
    • 它肯定可以工作,因为我刚刚检查过。你应用了约束吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2018-04-29
    • 2013-07-26
    相关资源
    最近更新 更多