Ich verwende programmgesteuert automatische Layoutbeschränkungen, um meine benutzerdefinierten UITableView-Zellen zu gestalten, und definiere die Zellengrößen in korrekt tableView:heightForRowAtIndexPath:
Es funktioniert ganz gut auf iOS6 und es tut Blick fein in iOS7 auch
ABER wenn ich die App unter iOS7 starte, ist hier die Art von Nachricht, die ich in der Konsole sehe:
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]>
Und tatsächlich gibt es eine der Einschränkungen in dieser Liste, die ich nicht möchte:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
und ich kann die translatesAutoresizingMaskIntoConstraints
Eigenschaft von nicht contentView
auf NO setzen => es würde die gesamte Zelle durcheinander bringen.
44 ist die Standardzellenhöhe, aber ich habe meine benutzerdefinierten Höhen im Tabellenansicht-Delegaten definiert. Warum hat die Zelleninhaltsansicht diese Einschränkung? Was könnte das verursachen?
In iOS6 passiert das nicht und sowohl auf iOS6 als auch auf iOS7 sieht alles gut aus.
Mein Code ist ziemlich groß, daher werde ich ihn nicht hier veröffentlichen, aber Sie können jederzeit nach einem Pastebin fragen, wenn Sie ihn benötigen.
Um anzugeben, wie ich es bei der Zellinitialisierung mache:
- Ich erstelle alle meine Beschriftungen, Schaltflächen usw.
- Ich habe ihr
translatesAutoresizingMaskIntoConstraints
Eigentum auf NEIN gesetzt - Ich füge sie als Unteransichten
contentView
der Zelle hinzu - Ich füge die Einschränkungen für die
contentView
Ich bin auch sehr daran interessiert zu verstehen, warum dies nur unter iOS7 geschieht.