2013-08-30 30 views
11

Mam 2 UILabellabelA i labelB o szerokości 320 pikseli. Stworzyłem ograniczeńPriorytet Ograniczeń Autolayout

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

Niestety labelA i labelB może kiedyś być duża i nie będzie pasować bez obcinania. Chciałbym się upewnić, że nie ważne co, labelB nie zostanie obcięte. (labelB nie przekroczy 160 pikseli). Chciałbym jednak w miarę możliwości wykorzystać dostępną przestrzeń dla etykiety A, więc mocowanie etykiety B na pół to tylko marnowanie miejsca.

Pytanie: W jaki sposób ustawić priorytet tak, aby labelB zawsze zachował swój wewnętrzny rozmiar? Gdzie jako labelA można uzyskać obcięty.

Odpowiedz

17

ustawić wytrzymałość na ściskanie do wysokiej zawartości na etykiecie B:

[labelB setContentCompressionResistancePriority: UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; 

Oznacza to, że B nie będzie starać się być skompresowane poniżej rzeczywistej wielkości danym tekstem. Aby był tak mały, jak to tylko możliwe, możesz również ustawić contentHuggingPriority - to sprawi, że spróbuje dopasować rozmiar tekstu.

+0

Niesamowita odpowiedź, działa jak urok! ContentHugging jest prawdopodobnie najlepiej wykorzystywany w pionie, ponieważ etykieta dobrze przytula tekst w poziomie. To naprawdę nie jest problem, ale +1, żeby to wskazać! – Byte

+1

Przytulanie pomaga w znalezieniu wielu etykiet obok siebie. – jrturton