J'utilise des contraintes de mise en page automatique par programme pour mettre en page mes cellules UITableView personnalisées et je définis correctement les tailles de cellule dans tableView:heightForRowAtIndexPath:
Cela fonctionne très bien sur iOS6 et cela a l' air bien dans iOS7 aussi
MAIS lorsque j'exécute l'application sur iOS7, voici le type de message que je vois dans la console:
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0xac4c5f0 V:|-(15)-[UIImageView:0xac47f50] (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSLayoutConstraint:0xac43620 V:[UIImageView:0xac47f50(62)]>",
"<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>",
"<NSLayoutConstraint:0xac43680 V:[UIView:0xac4d0f0(1)]>",
"<NSLayoutConstraint:0xac436b0 V:[UIView:0xac4d0f0]-(0)-| (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>
Et en effet, il y a une des contraintes dans cette liste que je ne veux pas:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
et je ne peux pas définir la translatesAutoresizingMaskIntoConstraints
propriété de la contentView
sur NO => cela gâcherait toute la cellule.
44 est la hauteur de cellule par défaut, mais j'ai défini mes hauteurs personnalisées dans le délégué de vue tableau, alors pourquoi la cellule contentView a-t-elle cette contrainte? Qu'est-ce qui pourrait causer cela?
Dans iOS6, cela ne se produit pas et tout va bien sur iOS6 et iOS7.
Mon code est assez gros donc je ne le posterai pas ici mais n'hésitez pas à demander un pastebin si vous en avez besoin.
Pour spécifier comment je le fais, lors de l'initialisation de la cellule:
- Je crée toutes mes étiquettes, boutons, etc.
- J'ai défini leur
translatesAutoresizingMaskIntoConstraints
propriété sur NON - Je les ajoute en tant que sous-vues
contentView
de la cellule - J'ajoute les contraintes sur le
contentView
Je suis également profondément intéressé à comprendre pourquoi cela ne se produit que sur iOS7.