gpt4 book ai didi

ios - 动态调整单元格大小时如何获取 UITableView 的高度?

转载 作者:IT王子 更新时间:2023-10-29 05:12:37 28 4
gpt4 key购买 nike

我有一个 UITableView,其中包含动态调整大小的单元格。这意味着我已经设置:

tableView.estimatedRowHeight = 50.0
tableView.rowHeight = UITableViewAutomaticDimension

现在我想获取整个表格 View 的高度。我尝试通过 tableView.contentSize.height 获取它,但这只会返回估计的行高,而不是 TableView 的实际动态高度。

如何获取整个表格 View 的动态高度?

最佳答案

我终于想出了一个解决方案:

tableView.contentSize.height 不适用于动态单元格,因为它们只会返回单元格数 * estimatedRowHeight

因此,要获得动态表格 View 高度,您需要查找所有可见单元格,然后将它们的高度相加。请注意,这仅适用于比屏幕短的表格 View 。

但是,在我们执行上述操作以查找可见单元格之前,重要的是要知道注意我们需要在屏幕上获取表格 View ,以便我们可以获得可见单元格。为此,我们可以将表格 View 的高度限制设置为任意大的数字,以便它出现在屏幕上:

  1. 设置 TableView 约束的高度:

    // Class variable heightOfTableViewConstraint set to 1000
    heightOfTableViewConstraint = NSLayoutConstraint(item: self.tableView, attribute: .height, relatedBy: .equal, toItem: containerView, attribute: .height, multiplier: 0.0, constant: 1000)
    containerView.addConstraint(heightOfTableViewConstraint)
  2. 调用 tableView.layoutIfNeeded(),完成后,查找可见单元格,计算它们的高度,然后编辑 heightOfTableViewConstraint:

    UIView.animate(withDuration: 0, animations: {
    self.tableView.layoutIfNeeded()
    }) { (complete) in
    var heightOfTableView: CGFloat = 0.0
    // Get visible cells and sum up their heights
    let cells = self.tableView.visibleCells
    for cell in cells {
    heightOfTableView += cell.frame.height
    }
    // Edit heightOfTableViewConstraint's constant to update height of table view
    self.heightOfTableViewConstraint.constant = heightOfTableView
    }

关于ios - 动态调整单元格大小时如何获取 UITableView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40079970/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com