Ich hatte eine Tabellenansicht in der Bildlaufansicht und musste die Höhe von tableView berechnen und die Größe entsprechend ändern. Das sind Schritte, die ich unternommen habe:
0) Fügen Sie Ihrer scrollView eine UIView hinzu (funktioniert wahrscheinlich ohne diesen Schritt, aber ich habe es getan, um mögliche Konflikte zu vermeiden) - dies ist eine Containr-Ansicht für Ihre Tabellenansicht. Wenn Sie diesen Schritt ausführen, setzen Sie die Ansichtsrahmen direkt auf die der Tabellenansicht.
1) Erstellen Sie eine Unterklasse von UITableView:
class IntrinsicTableView: UITableView {
override var contentSize:CGSize {
didSet {
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return CGSize(width: UIViewNoIntrinsicMetric, height: contentSize.height)
}
}
2) Setzen Sie die Klasse einer Tabellenansicht im Storyboard auf IntrinsicTableView: Screenshot: http://joxi.ru/a2XEENpsyBWq0A
3) Stellen Sie die heightConstraint auf Ihre Tabellenansicht ein
4) Ziehen Sie das IBoutlet Ihrer Tabelle auf Ihren ViewController
5) Ziehen Sie das IBoutlet der Höhenbeschränkung Ihrer Tabelle auf Ihren ViewController
6) Fügen Sie diese Methode Ihrem ViewController hinzu:
override func viewWillLayoutSubviews() {
super.updateViewConstraints()
self.yourTableViewsHeightConstraint?.constant = self.yourTableView.intrinsicContentSize.height
}
Hoffe das hilft