我有 2 个自动布局的单元格UITableView
(非常简单,UILabel
和UISwitch
,以及UILabel
和UIImageView
(。我想得到表视图heihgt
。UITableView
居住在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()