Content Hugging 和 Content Compression Resistance

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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容