如何让UITableView的高度等于其内容的高度? (即contentSize)
到目前为止,我所拥有的解决方案是在知道高度发生变化时为表高度和setNeedsUpdateConstraints()
创建约束。而且,我不能将此约束设置为contentSize,而是需要手动计算高度来计算高度。
这使得处理非常麻烦,特别是当我在另一个表中有一个表时,或者当我不知道内容大小会改变时。
这对我来说似乎是一个正常的用例,有一个内容高度表,我想知道我是否遗漏了一些明显的东西?
答案 0 :(得分:0)
在viewDidLoad中添加一个观察者
tableView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)
然后实现以下
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let tableView = object as? UITableView {
if tableView == self.tableView && keyPath == "contentSize" {
// Now you know that the content size for self.tableView changed.
// Do your frame updation here
}
}
}