2013-08-30 17 views
11

Ich habe 2 UILabellabelA und labelB und eine Breite von 320 px. I Einschränkungen erstelltAutolayout Constraints Priorität

H:|-[labelA]-(>=4)-[labelB]-|

Leider labelA und labelB irgendwann groß sein können und wäre ohne Abschneiden passen. Ich möchte sicherstellen, dass egal, labelB nicht abgeschnitten wird. (labelB wird nicht über 160 px gehen). Ich möchte jedoch den verfügbaren Platz für labelA so gut wie möglich nutzen, so dass LabelB nur halb so einfach ist.

Frage: Wie lege ich eine Priorität so, dass labelB immer seine innere Größe behalten? Wo als labelA kann abgeschnitten werden.

Antwort

17

Sie setzen den Inhalt Kompressionswiderstand zu hoch auf dem Label B:

[labelB setContentCompressionResistancePriority: UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; 

Dies bedeutet, dass B nicht unter die intrinsische Größe von Text angegeben werden versuchen, werden komprimiert. Um es auch so klein wie möglich zu machen, können Sie auch die contentHuggingPriority setzen - dies wird es versuchen, die Größe des Textes anzupassen.

+0

Super Antwort, funktioniert wie ein Charme! ContentHugging wird wahrscheinlich am besten in vertikalen verwendet, da Label den Text auf der horizontalen ziemlich gut umarmt. Das ist nicht wirklich ein Problem, aber +1 für das Aufzeigen! – Byte

+1

Umarmen hilft mit mehreren Etiketten nebeneinander, finde ich. – jrturton