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>
网友评论