J'essaie actuellement de comprendre ce que je fais de mal avec la mise en page UITableViewCell basée sur les contraintes suivante (iOS 8).Veuillez m'expliquer le comportement de mise en page automatique suivant
Ma cellule est disposé comme le montre cette image:
Il y a une vue de l'image sur la gauche, une étiquette à droite, et les deux devraient être en contact avec les marges cellulaires partout. L'image a une taille fixe (64x64), la hauteur de l'étiquette sera toujours plus petite que cela. Je veux que la taille de l'image fasse que la cellule augmente la hauteur jusqu'à la valeur correcte (hauteur de l'image + marge 2 *).
Le problème est le suivant: J'ai trois contraintes pour la taille verticale, V[Image(64)]
, Reset.bottom == UITableViewCellContentView.bottomMargin
et Reset.top == UITableViewCellContentView.topMargin
(toutes définies via le storyboard). Quand j'affiche la cellule, j'obtiens une erreur de contraintes insatisfiable. La contrainte UIView-Encapsulated-Layout-Height
interfère avec mes contraintes et la mise en forme automatique casse la contrainte de hauteur de ma vue d'image. Tout a l'air comme il se doit, mais je n'aime pas les erreurs à l'exécution.
Si je donne à ma contrainte de hauteur la priorité 999, tout va bien, pas d'erreurs. Donc, d'après ce que je comprends, ma contrainte de hauteur sera brisée dans les deux cas au moment de l'exécution.
Mais lorsque je supprime complètement la contrainte de hauteur, l'image s'affiche à sa hauteur d'origine (le fichier a une résolution différente de celle affichée dans la cellule). Pourquoi est-ce, ou qu'est-ce que je me trompe ici?
Modifier/Mettre à jour: Je viens de remarquer que j'avais tort sur tout ce qui fonctionnait. L'affichage initial de ma cellule est bien, mais lorsque la cellule change (dans mon cas je déplace une autre simple ligne, cellule en dessous), ma cellule change sa hauteur à la hauteur par défaut de la ligne (44 pts), écrasant l'image Dans le processus. Cela arrive dans les deux cas, quand la mise en page automatique brise mes contraintes ou quand je réduis la priorité de la hauteur à 999. Je ne sais vraiment pas comment faire pour que ces cellules fassent ce que je veux.
ont-ils quelque chose de nouveau dans iOS 8 et vous pouvez maintenant redimensionner la table cellule de vue de la cellule elle-même? – Artem
Oui, il y a quelque chose à propos des hauteurs de cellules dynamiques. Cela fait partie du plan autolayout-for-everything, je pense. Fondamentalement, 'tableView: heightForCellAtIndexPath' ne devrait plus être nécessaire. – Kolja
Si c'est le cas, il doit être comme plusieurs fois plus rapide que dans iOS 7. J'ai utilisé autolayout dans les cellules (même lorsque 'tableView: heightForCellAtIndexPath' renvoie la même valeur) et il était lentement lent. – Artem