Estou usando restrições de layout automático programaticamente para fazer o layout de minhas células UITableView personalizadas e estou definindo corretamente os tamanhos das células em tableView:heightForRowAtIndexPath:
Ele está trabalhando muito bem no iOS6 e ele faz olhar bem em iOS7 bem
MAS quando executo o aplicativo no iOS7, eis o tipo de mensagem que vejo no 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, de fato, há uma das restrições nessa lista que não quero:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
e não consigo definir a translatesAutoresizingMaskIntoConstraints
propriedade de contentView
como NÃO =>, isso bagunçaria toda a célula.
44 é a altura de célula padrão, mas eu defini minhas alturas customizadas no delegado de visualização de tabela, então por que a célula contentView tem essa restrição? O que pode causar isso?
No iOS6 isso não está acontecendo e tudo parece bem no iOS6 e no iOS7.
Meu código é muito grande, então não vou postá-lo aqui, mas fique à vontade para pedir um pastebin se precisar.
Para especificar como estou fazendo isso, na inicialização da célula:
- Eu crio todos os meus rótulos, botões, etc.
- Eu defini sua
translatesAutoresizingMaskIntoConstraints
propriedade como NÃO - Eu os adiciono como subvisões da
contentView
célula - Eu adiciono as restrições no
contentView
Também estou profundamente interessado em entender por que isso acontece apenas no iOS7.