Content Hugging
view.width <= optimal size,它的意思是此constraint試圖保持view的size不讓其變大:
舉個例子:
<pre><code>|-(leftCons)-(label)-(rightCons)-|
leftCons.constant = 10
rightCons.constant = 10
比如現在label
的真實內容很短,也就是小于SCREENWITH-10*2,我們為了不讓它變大,保持一個最合適的長度。(<=)
這里我們可以這么修改:
rightCons.priority = 250
label.Hpriority = 251
label.Hpriority優先級更高一些,所以hugging起到作用<=
</code></pre>
Content Compression Resistance
view.width >= optimal size,此constraint試圖保持view的size不讓其變小:
舉個例子:
<pre><code>|-(leftCons)-(label)-(rightCons)-|
leftCons.constant = 100
rightCons.constant = 100
比如現在label
的真實內容很長,大于SCREENWITH-100*2,我們為了不讓它變小,保持一個最合適的長度。(>=)
這里我們可以這么修改:
rightCons.priority = 749
label.Hpriority = 750
label.Hpriority優先級更高一些,所以Compression Resistance起到作用>=
</code></pre>
再來個更復雜點的:
<pre><code>
|-8-(label1)-8-(label2)-rightCons-|
現在的需求是這樣,label1的內容可長可短,label2的內容固定.當label1很短的時候,label2需要緊貼著label1,當label1很長的時候,label2固定在右側8px處,label1末尾打省略號.
通俗一點就是:
|成都市武侯區 17708179999 |
|成都市武侯區成都市武侯區成都市武侯區.... 17708179999|
現在我們可以這樣書寫:
rightCons.relation = (>=)這里肯定是>=,因為它右側是不固定的
rightCons.priority = 751 我們的目標是label1不能顯示完全,也就是<=他自身,所以這里的等級需要比下面label的大
label2.Content Compression Resistance priority = 750
label1.Content Compression Resistance priority = 749
這里說明幾點:
1.rightCons.relation = (>=)當內容很少時,兩個label靠左實現,當內容很長時,label2居屏幕右側,label1自適應
2.rightCons.priority最大,保證了不會因為兩個label的長度太長而被擠出屏幕.
3.label2. priority > label1.priority ,也就是說label2的防止自己變小的能力大一些,相對來著label1就會被壓縮.
</code></pre>