Sto usando vincoli di layout automatico a livello di codice per creare il layout delle mie celle UITableView personalizzate e sto definendo correttamente le dimensioni delle celle in tableView:heightForRowAtIndexPath:
Si sta lavorando bene su iOS6 e lo fa guardare bene in iOS7 pure
MA quando eseguo l'app su iOS7, ecco il tipo di messaggio che vedo nella 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]>
E in effetti c'è uno dei vincoli in quella lista che non voglio:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
e non posso impostare la translatesAutoresizingMaskIntoConstraints
proprietà del contentView
su NO => rovinerebbe l'intera cella.
44 è l'altezza della cella predefinita ma ho definito le mie altezze personalizzate nel delegato della vista tabella, quindi perché la cella contentView ha questo vincolo? Cosa potrebbe causare questo?
In iOS6 non sta succedendo e tutto sembra a posto sia su iOS6 che su iOS7.
Il mio codice è abbastanza grande, quindi non lo pubblicherò qui, ma sentiti libero di chiedere un pastebin se ne hai bisogno.
Per specificare come lo sto facendo, sull'inizializzazione delle cellule:
- Creo tutte le mie etichette, pulsanti, ecc
- Ho impostato la loro
translatesAutoresizingMaskIntoConstraints
proprietà su NO - Li aggiungo come sottoviste della
contentView
cella - Aggiungo i vincoli su
contentView
Sono anche profondamente interessato a capire perché questo accade solo su iOS7.