別の解決策があります。 テーブルビュー 'contentSize'変数にオブザーバを追加できます。テーブルビューの内容が変更されたときのセルフサイズ。
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableHeightConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
tableView.layer.removeAllAnimations()
tableHeightConstraint.constant = tableView.contentSize.height
UIView.animate(withDuration: 0.5) {
self.updateConstraints()
self.layoutIfNeeded()
}
}
別の解決策は、独自の 'intrinsicContentSize.height'を' contentSize.height'に設定する 'UITableView'のサブクラスを作ることです。 http://stackoverflow.com/a/17335818/77567を参照してください。 –
@robmayoffの回答は、私の意見では、joernの回答よりもダイナミックなので、より良いです。 – Altimac