AutoLayout Einstellung UILabel Höhe auf Null

8

Ich habe eine UILabel für die Artikelbeschreibung unter anderen Ansichten, die alle mit Einschränkungen in Interface Builder angelegt sind - Sie können alle relevanten Einschränkungen im Bild unten sehen. Die Anzahl der Zeilen wird ebenfalls auf 0 gesetzt.

Ich habe die Beschränkung für die Höhe nicht festgelegt, weil ich die UILabel basierend auf dem darin enthaltenen Text in der Größe ändern möchte. Was passiert, ist stattdessen direkt nach

%Vor%

wird aufgerufen, die Höhe von UILabel wird auf 0 gesetzt. Auch wenn ich keinen anderen Text auf UILabel setze, wird im Interface Builder der Standardwert Elementbeschreibung festgelegt.

Die Beschriftung des Item-Titels oben wird auf die gleiche Weise eingestellt, aber diese wird nicht auf 0 gequetscht, daher bin ich etwas verwirrt.

Hat jemand Erfahrung mit einem solchen Verhalten?

    
artooras 28.08.2015, 13:15
quelle

5 Antworten

10

Ich habe es gelöst, indem ich die UILabel vertical compression resistance priority auf 1000 (default 750 ) im Interface Builder gesetzt habe.

Da meine Ansichten in eine andere Ansicht eingebettet sind und der untere Teil der übergeordneten Ansicht vom unteren Teil der untersten untergeordneten Ansicht abhängig ist, spekuliere ich nur, dass die UILabel ohne Höhenbeschränkung beim Auslegen des Ansichten. Wahrscheinlich würde das Spielen mit Prioritäten anderer Beschränkungen irgendwo in der Kette das gleiche Ergebnis ergeben, aber ich konnte es nicht erfolgreich machen. Die obige Lösung hat jedoch funktioniert, was in meinem Fall gut genug ist.

Hoffe das hilft jemandem.

    
artooras 29.08.2015, 07:52
quelle
1

AutoLayout in diesem UIViewController kann nicht alle constraints , die Sie festgelegt haben, erfüllen, daher werden die auf Ihrem UILabel abgewiesen, was zu einem komprimierten Zustand führt. Sie sollten sich die anderen constraints in Ihrer UIViewController ansehen und die priority von height contraint auf eine höhere Zahl setzen.

    
Loegic 28.08.2015 15:00
quelle
0

Setze 3 Einschränkung

1. Leading Space zu Superview

2.Trailing Space zu Superview

3. Platz zum Superview

dann

%Vor%     
iPhone 28.08.2015 13:31
quelle
0

Strg ziehen von der Beschriftung zu sich selbst & gt; Höhe wählen & gt; setze die Konstante der Höhe auf 0 und verändere gleich (==) zu größer als oder equeal (& gt; =)

    
Rick van der Linde 28.08.2015 13:47
quelle
0

Ich denke, Sie müssen 5 Einschränkungen für Ihr Label festlegen:

  • Führender Platz zum Superview
  • Nachstellplatz zum Superview
  • Vertikaler Platz zu "Item"
  • Vertikaler Platz für "Name"
  • Höhe

Fügen Sie dann ein IBOutlet in Ihrem Controller auf der Constraint-Höhe hinzu (sagen wir LabelHeight).

So können Sie in Ihrer viewDidLoad diesen Constraint-Wert setzen:

%Vor%     
Y.Bonafons 28.08.2015 14:53
quelle

Tags und Links