计算 UITableView 预期高度



我有 2 个自动布局的单元格UITableView(非常简单,UILabelUISwitch,以及UILabelUIImageView(。我想得到表视图heihgtUITableView居住在UIView,所以我做了以下工作:

override func layoutSubviews() {
super.layoutSubviews()
if !isLayoutSubviewsDone {
expectedHeight = tableView.contentSize.height
isLayoutSubviewsDone = true
didLayoutSubivews?()
}
}

不幸的是,tableView.contentSize.height比它应该的要小。 约20%。如何获得确切的高度?

如何获得确切的高度?

没有神奇的方法可以根据表格的内容调整表格的大小。表视图没有自动大小。它的细胞高度并不神奇。 你必须自己计算出每个单元格的高度,一次一个,然后把它们加起来。

如果您将观察者添加到 TableView,我相信您将获得确切的表视图高度。尝试下面的代码。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
expectedHeight.constant = tableView.contentSize.height
}

标记:- 在重新加载表视图上添加观察者

tableView.addObserver(self, forKeyPath: "tableViewObserver", options: [], context: nil)
tableView.reloadData()

最新更新