Ich versuche, eine UITableViewCell mit einem einzigen UIImageView in einem UITableView mit dynamischen Zellenhöhen mit AutoLayout (d. H. tableView.rowHeight = UITableViewAutomaticDimension
) zu platzieren.Single UIImageView in UITableViewCell mit Autolayout
Die Bilder, die ich anzeigen werde, haben ein bestimmtes Verhältnis (1000: 667), aber neben den Bildzellen gibt es noch andere Zellen. Ich habe meine Beschränkungslogik für diese Zelle so aufgebaut, dass sie das Seitenverhältnis des UIImageView berücksichtigt.
Um Missbildungen oder Teile des Bildes, die nicht angezeigt werden (Clip-Unteransichten), zu vermeiden, sollte daher die Abhängigkeit des Seitenverhältnisses die Höhe der Zelle abhängig von der Bildschirmbreite des Geräts bestimmen.
Die Zelle wurde in einer Nib-Datei mit den folgenden Einschränkungen gebaut:
Offenbar das funktioniert, da die Höhe der Zelle Laufzeit je nach Gerät (Simulator) verwendete entsprechend auf eingestellt ist.
Das Problem ist, ich bekomme viele Breaking Constraint Fehlerprotokolle (unten). Irgendwelche Ideen, warum iOS/die Tabelle Beschwerden über diese Einschränkungen anzeigen?
Vorschläge zu verschiedenen Ansätzen zur Anzeige einer UITableViewCell, die das Seitenverhältnis respektiert, würden ebenfalls geschätzt werden.
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.
(
"<NSLayoutConstraint:0x7ff5097a7910 UIImageView:0x7ff5097393a0.width == 1.49925*UIImageView:0x7ff5097393a0.height>",
"<NSLayoutConstraint:0x7ff509739550 V:|-(0)-[UIImageView:0x7ff5097393a0] (Names: '|':UITableViewCellContentView:0x7ff5097a8e10)>",
"<NSLayoutConstraint:0x7ff5097aa180 UIImageView:0x7ff5097393a0.centerY == UITableViewCellContentView:0x7ff5097a8e10.centerY>",
"<NSLayoutConstraint:0x7ff5097a8c70 H:|-(0)-[UIImageView:0x7ff5097393a0] (Names: '|':UITableViewCellContentView:0x7ff5097a8e10)>",
"<NSLayoutConstraint:0x7ff5097a8cc0 H:[UIImageView:0x7ff5097393a0]-(0)-| (Names: '|':UITableViewCellContentView:0x7ff5097a8e10)>",
"<NSLayoutConstraint:0x7ff5097b6440 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7ff5097a8e10(276)]>",
"<NSLayoutConstraint:0x7ff5097b4930 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7ff5097a8e10(414)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ff5097a7910 UIImageView:0x7ff5097393a0.width == 1.49925*UIImageView:0x7ff5097393a0.height>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
ich auch andere Einschränkung versucht haben annähert, wie Ersetzen des 'Zentriert Y: Superview' für' Equal Breite zu: SuperView' mit dem gleichen Ergebnis. – Fdo
Wenn Sie möchten, dass UIImageView height festgelegt wird, dann gilt nur die obere oder untere Einschränkung. Auch wenn Sie Ausrichtung und Höhe in der Mitte haben, brauchen Sie keine obere und untere Beschränkung. Wenn Sie möchten, dass die UIImageView-Breite festgelegt wird, müssen Sie eine führende oder nachgestellte Einschränkung verwenden. – sschunara
Entfernen Sie einfach die feste Höhe und Breite von imageView sowie die Mittenausrichtung. wird dieses Problem beheben. –