UITableView高度与内容大小

时间:2017-04-28 15:08:41

标签: ios uitableview

如何让UITableView的高度等于其内容的高度? (即contentSize)

到目前为止,我所拥有的解决方案是在知道高度发生变化时为表高度和setNeedsUpdateConstraints()创建约束。而且,我不能将此约束设置为contentSize,而是需要手动计算高度来计算高度。

这使得处理非常麻烦,特别是当我在另一个表中有一个表时,或者当我不知道内容大小会改变时。

这对我来说似乎是一个正常的用例,有一个内容高度表,我想知道我是否遗漏了一些明显的东西?

1 个答案:

答案 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
        }
    }
}