Ich arbeite an einer einfachen Anwendung und jetzt bin ich konzentriert auf die Erweiterung von UITableViewCell nach dem Benutzer tippen Sie auf diese Zelle. Es ist iOS 8-App so ich gesetzt haben:iOS erweitern UITableViewCell auf Klick mit AutoLayout
self.tableVIew.rowHeight = UITableViewAutomaticDimension
self.tableVIew.estimatedRowHeight = 50
Zelle Einschränkungen wie folgt aussehen:
Wenn diese Funktion Benutzer Abgriffzelle heißt:
func extend() {
self.contentView.removeConstraint(self.bottomConstraint)
let additionalView = UIView()
additionalView.setTranslatesAutoresizingMaskIntoConstraints(false)
additionalView.backgroundColor = UIColor.orangeColor()
self.contentView.addSubview(additionalView)
self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[additionalView(50)]-5-|", options: nil, metrics: nil, views: ["additionalView" : additionalView]))
self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-5-[additionalView(100)][email protected]|", options: nil, metrics: nil, views: ["additionalView" : additionalView]))
}
self.bottomConstraint ist costraint zwischen grünem Kreis unten und Zelle contentView unten.
Die Frage ist: Warum diese Lösung nur funktioniert, wenn Priorität in Zwang gesetzt:
V:|-5-[additionalView(100)][email protected]|
?
Ohne ausdrückliche Priorität habe ich Fehler:
(
"<NSLayoutConstraint:0x7a63f7a0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7a737840(60)]>",
"<NSLayoutConstraint:0x7a644f40 V:|-(5)-[UIView:0x7a63f2a0] (Names: '|':UITableViewCellContentView:0x7a737840)>",
"<NSLayoutConstraint:0x7a644fb0 V:[UIView:0x7a63f2a0(100)]>",
"<NSLayoutConstraint:0x7a644f70 V:[UIView:0x7a63f2a0]-(5)-| (Names: '|':UITableViewCellContentView:0x7a737840)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7a644f70 V:[UIView:0x7a63f2a0]-(5)-| (Names: '|':UITableViewCellContentView:0x7a737840)>
Meine Vermutung ist, dass Ihre aktuelle Zellenhöhe 60 und neue Höhe 110 ist, so dass es eine der Einschränkung brechen muss, um es wachsen zu lassen, Standardpriorität ist 1000, 3 gleiche Priorität Einschränkungen müssen gebrochen werden. – gabbler
Höhe der Zelle sollte nicht dynamisch basierend auf Einschränkungen der Inhaltsansicht berechnet werden? – MichalMoskala
Ja, aber additionalView hat eine Höhe von 100, oder? – gabbler