Automatische Layouteinschränkungen treten bei iOS7 in UITableViewCell auf
Ich bin mit auto layout constraints programmgesteuert zu layout meiner custom UITableView Zellen und ich bin die korrekte Definition der Zellgrößen in tableView:heightForRowAtIndexPath:
Funktioniert es auch Prima unter iOS6 und es funktioniert Aussehen fein in iOS7 als auch
ABER wenn ich die app auf iOS7, hier ist die Art von Nachricht, die ich sehe in der Konsole:
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 ja gibt es die Einschränkung, dass die Liste will ich nicht :
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
und ich kann nicht den translatesAutoresizingMaskIntoConstraints
Eigenschaft des contentView
NO => es würde mess up die gesamte Zelle.
44 ist der Standard-Zeilenhöhe aber ich mein custom Höhen in der Tabelle zu delegieren, also warum macht die Zelle contentView hat diese Einschränkung? Was könnte dies verursachen?
In iOS6 ist es nicht passiert und alles sieht Prima auf beiden iOS6 und iOS7.
Mein code ist ziemlich groß, also werde ich nicht posten es hier, aber fühlen Sie sich frei, zu Fragen, für ein pastebin, wenn Sie es brauchen.
Angeben, wie mache ich es, auf die Zelle Initialisierung:
- Ich erstelle alle meine labels, buttons, etc
- Ich Ihre
translatesAutoresizingMaskIntoConstraints
- Eigenschaft auf NEIN - Ich diese hinzufügen, sowie die Untersichten der
contentView
von der Zelle - Ich hinzufügen, dass die Einschränkungen für die
contentView
Ich bin auch zutiefst daran interessiert, zu verstehen, warum dies geschieht nur auf iOS7.
InformationsquelleAutor der Frage Alexis | 2013-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses problem auch.. Es scheint, dass die contentView frame nicht aktualisiert, bis
layoutSubviews
heißt jedoch den Rahmen der Zelle aktualisiert wird früher verlassen des contentView ist ein frame-set zu{0, 0, 320, 44}
auf die Zeit, wenn die constraints ausgewertet.Nach einem Blick auf den contentView im detail, Es scheint, dass autoresizingMasks sind nicht mehr festgelegt.
Einstellung der autoresizingMask, bevor Sie beschränken Ihren Blick auf dieses Problem behoben werden kann:
InformationsquelleAutor der Antwort liamnichols
Anscheinend gibt es etwas falsch mit UITableViewCell und UICollectionViewCell auf iOS 7 mit iOS-8-SDK.
Können Sie aktualisieren, contentView der Zelle, wenn die Zelle wiederverwendet, wie dieses:
Für Statischen UITableViewController:
Da Statische Tabelle, View-Controller, sind empfindlich und können leicht gebrochen werden, wenn Sie implementieren, einige datasource oder deletegate Methoden - gibt es Kontrollen, die sicherstellen, dass dieser code wird nur kompiliert und ausgeführt werden auf iOS 7
Es ist ähnlich wie bei standard-dynamic UITableViewController:
Für diesen Fall brauchen wir nicht die Zusammenstellung extra prüfen, da die Implementierung dieser Methode erforderlich ist.
Die Idee ist die gleiche für beide Fälle und für UICollectionViewCell, wie eben in diesem thread: Autoresizing Thema UICollectionViewCell contentView frame im Storyboard Prototyp-Zelle (Xcode 6, iOS 8 SDK) passiert, wenn mit iOS 7 nur
InformationsquelleAutor der Antwort KoCMoHaBTa
Als Zellen wiederverwendet werden und die Höhe ändern können, basierend auf dem Inhalt, ich denke im Allgemeinen wäre es besser, die Priorität der Abstände zu weniger als erforderlich.
In Ihrem Fall die UIImageView hat einen Abstand von 15 an der Oberseite und die Unterseite hat einen Abstand von 0 nach unten. Wenn Sie die Priorität jener Einschränkungen bis 999 (statt 1000), die app wird nicht Abstürzen, denn die Einschränkungen sind nicht erforderlich.
Einmal die layoutSubviews-Methode aufgerufen wird, wird die Zelle die richtige Höhe, und die constraints erfüllt werden können, die normalerweise.
InformationsquelleAutor der Antwort Steven
Ich wusste immer noch nicht finden, eine gute Lösung für storyboards...
Einige Infos auch hier:
https://github.com/Alex311/TableCellWithAutoLayout/commit/bde387b27e33605eeac3465475d2f2ff9775f163#commitcomment-4633188
Ab, was Sie Ratschläge:
Ich habe induzierten meine Lösung:
.
.
InformationsquelleAutor der Antwort asdfasdfads
Erhöhen Sie einfach die Standard-Zeilenhöhe. Sieht aus wie das problem ist, dass der Inhalt der Zelle größer ist als der Standardwert (initial) Größe der Zelle, gegen einige nicht-Negativität Einschränkungen, bis die Zelle wird angepasst, um die tatsächliche Größe.
InformationsquelleAutor der Antwort Vadim Yelagin
Vielleicht legen Sie die Ansicht, die Priorität größer als die 750 und weniger als 1000 lösen können.
InformationsquelleAutor der Antwort heramerom
Ich hatte das gleiche problem. Meine Lösung basiert auf anderen, über:
Besten,
Alessandro
InformationsquelleAutor der Antwort Cormentis
I ' V hatte es ebenfalls mit diesem problem und keiner der Vorschläge geholfen. In meinem Fall hatte ich Größe Auswahl Zelle, und es enthielt collectionView innen (jeden collectionView Zelle enthaltenen Bild in voller Größe). Nun, die Größe der Zellen heigh war ein wenig größer (60) als die collectionView (50) und Bilder im inneren (50). Weil der collectionView view hat unten ausrichten zu superview Einschränkung mit einem Wert von 10. Diesem Fall mir eine Warnung, und der einzige Weg, das zu beheben, war die Zelle der Höhe die gleiche ist wie die collectionView.
InformationsquelleAutor der Antwort Centurion
Landete ich nicht mit UITableViewCell in designer überhaupt... ich erstellen, da benutzerdefinierte Ansicht, und fügen Sie Inhalt anzeigen, der Zelle programmgesteuert... Mit etwas Hilfe Kategorien gibt es auch keinen boilerplate-code...
InformationsquelleAutor der Antwort Renetik
Wenn es gut funktioniert, in iOS8,und bekomme die Warnung in iOS7,Sie können suchen die storyboard-source-code und finden Sie die richtige tableviewCell, dann fügen Sie die rect-Attribut nach der tableviewCell-Linie. Dank kuchumovn.
InformationsquelleAutor der Antwort NSDeveloper