Je rencontre un problème avec les vues d'en-tête de section UITableView automatiques/dynamiques qui contiennent un UILabel qui enveloppe (numberOfLines = 0). La hauteur n'est pas calculée correctement, en particulier lorsque vous faites défiler la table et que les vues sont réutilisées. Parfois, UILabel enveloppe, parfois il est tronqué, parfois une ou plusieurs des étiquettes ne sont pas visibles, et parfois il y a un espacement supplémentaire entre les étiquettes. La vue personnalisée contient un UIStackView vertical avec trois UILabels, dont une fois enveloppe.Taille de l'en-tête de section UITableView La hauteur automatique n'est pas correctement mise à jour
Un exemple d'application complète illustrant le problème peut être trouvé au https://github.com/outerstorm/tableviewHeaderTest.
Les hauteurs d'en-tête de section se règlent automatiquement en viewDidLoad ce qui suit:
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
tableView.estimatedSectionHeaderHeight = 30.0
et ont également mis en œuvre le heightForHeaderInSection suivant juste pour essayer de le faire fonctionner:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return UITableViewAutomaticDimension
}
Je a également essayé d'appeler setNeedsLayout() et layoutIfNeeded() à divers points en vain. Toutes les suggestions seraient grandement appréciées.
Voici une capture d'écran du comportement vu dans l'application. La première section est coupure et la deuxième section est trop grand:
Cela ne correspond pas à la virtualisation. Les cellules sont désactivées et doivent être redimensionnées chaque fois que cela se produit. Si ce n'est pas le cas, la virtualisation est cassée. – Tim