J'ai un footerView TableView avec deux étiquettes qui peuvent contenir plusieurs lignes. J'utilise ce code dans viewDidLayoutSubviews:Comment actualiser un pied de page dynamique TableView (pas pied de page) en utilisant autolayout
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
label1.preferredMaxLayoutWidth = tableView.frame.size.width - Constant.footerMarginSpace
label2.preferredMaxLayoutWidth = tableView.frame.size.width - Constant.footerMarginSpace
footerView.setNeedsLayout()
footerView.layoutIfNeeded()
footerView.frame.size.height = footerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
tableView.tableFooterView = footerView
}
Cela fonctionne très bien (les étiquettes s'étendront sur des lignes de multiples et la taille de la vue est réglage) lorsque la valeur des étiquettes sont réglées avant que la vue est affichée , mais si je mets à jour leur contenu après, la vue ne mettra pas à jour sa mise en page, même en utilisant tableView.reloadData().
Si j'appuie sur une autre vue au-dessus de ma vue et la rejette, la mise en page sera correcte.
Quelle est la bonne façon de mettre à jour la mise en page et la taille de mon pied de page TableView?
try tableView.tableFooterView.layoutIfNeeded() après l'édition. –