2017-03-13 4 views
0

Ich versuche, Zeilen anzuzeigen, die ein Thumbnail und einen Titel enthalten.Ich versuche, automatische Beschränkung auf Label festzulegen, auf langen Text fehlgeschlagen

Es funktioniert gut für kurze Titelfolgen, aber für lange Saiten bricht es. Anstatt horizontal zu expandieren, würde ich bevorzugen, dass es vertikal expandiert. Überprüfen Sie den folgenden Screenshot, um zu sehen, was passiert, wenn eine lange Zeichenfolge verwendet wird. Ich verwende PureLayout zu Auto-Layout zu verwalten:

thumbnailView.autoSetDimensions(to:CGSize(width: 75, height: 75)) 
thumbnailView.autoPinEdge(toSuperviewEdge: .leading, withInset: kLabelHorizontalInsets) 
thumbnailView.autoPinEdge(toSuperviewEdge: .top, withInset: kLabelVerticalInsets) 
thumbnailView.autoPinEdge(toSuperviewEdge: .bottom, withInset: kLabelVerticalInsets, relation: .greaterThanOrEqual) 

titleLabel.autoPinEdge(.leading, to: .trailing, of: thumbnailView, withOffset: kLabelHorizontalInsets, relation: .lessThanOrEqual) 
titleLabel.autoPinEdge(toSuperviewEdge: .top, withInset: kLabelVerticalInsets) 
titleLabel.autoPinEdge(toSuperviewEdge: .trailing, withInset: kLabelHorizontalInsets) 
titleLabel.autoPinEdge(toSuperviewEdge: .bottom, withInset: kLabelVerticalInsets) 

Die entsprechenden Einstellungen auf dem UITextLabel sind ebenfalls gesetzt:

titleLabel.lineBreakMode = .byWordWrapping 
titleLabel.numberOfLines = 0 
titleLabel.textAlignment = .left 

Irgendwelche Vorschläge geschätzt werden. Dank tableview screenshot

+0

Warum verwenden Sie '.lessThanOrEqual' für die führende Einschränkung Ihres Etiketts? – Paulw11

+0

@ Paulw11 Ich möchte, dass es einen minimalen Abstand zwischen dem Etikett und dem Thumbnail gibt – user339946

+0

Ok, aber Sie wollen nicht '.lessThanOrEqual'. Das besagt, dass die Marge "kLabelHorizontalInsets" ** oder weniger ** sein muss. -20 ist weniger. Sie wollen nur, dass der Rand "kLabelHorizontalInsets" ist, also entfernen Sie den Parameter 'relation' – Paulw11

Antwort

0

Gefunden eine mögliche Lösung: solution

Es stellte sich heraus UILabel ‚s numberOfLines Eigenschaft und Auto-Layout nicht schön spielen.

1

Sie müssen die obere und untere Einschränkung nicht einschränken. Das UILabel passt die contentHeight automatisch an. Sie können sich auf contentHuggingPriorityForAxis: und contentCompressionResistancePriorityForAxis: beziehen. Sie können die Mitte des Etiketts anstatt unten und oben festlegen.

Verwandte Themen