En dépit d'avoir défini des contraintes sur tous les éléments, y compris les contraintes verticales nécessaires à la cellule pour calculer sa hauteur, la disposition automatique semble être ignorée: toutes les cellules sont comprimées.
Voici une capture d'écran du résultat et des contraintes dans le storyboard.
Dans le VC qui contient la tableView, voici le code dans viewDidLoad:
tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension
La mise en commentaire de la deuxième ligne donne des cellules d'une hauteur de 120,0 mais la mise en page automatique est également ignorée.
Merci
Mise à jour
Pour simplifier l'interface, j'ai laissé une seule étiquette avec, comme contraintes:
- Espace de premier plan pour superviser
- Espace supérieur à superviser
- Largeur et hauteur fixes (100 & 100)
- Espace inférieur à la marge du conteneur pour s'assurer que la cellule a toutes les contraintes verticales pour déterminer sa hauteur
Et avec cette interface simplifiée, la mise en page automatique n'est toujours pas prise en compte, ce qui me laisse entendre que le problème ne venait pas de contraintes mal définies.
Dans l'inspecteur de taille, la hauteur de ligne est définie sur 120 et Personnalisé est coché. La cellule a la bonne classe personnalisée, l'identifiant de réutilisation de cellule est correct.
Mise à jour: solution trouvée
C'était une simple erreur, voir ma réponse ci-dessous.
la source
Réponses:
La mise en page automatique a été ignorée car la cellule prototype ET l'UIView de la cellule avaient reçu la classe de cellule personnalisée dans IB.
La redéfinition de UIView sur la classe UIView a résolu le problème.
la source
Je pense que le problème est que vous implémentez:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }
Vous devez supprimer cette fonction pour que la vue du tableau calcule sa hauteur automatique pour les cellules.
la source