美文网首页
XIB同一层级,两个Label的Content Hugging

XIB同一层级,两个Label的Content Hugging

作者: struggle3g | 来源:发表于2018-05-25 17:49 被阅读33次

    起因

    在使用xib的过程中,在同一层级创建两个Label:Label1、Label2,并且我需要Label2在Label1的后面10之后,并且两个Label都是自适应长度、高度。


    设置好约束以后会有两个警告


    警告原因

    有的时候就是DT,看见黄色的就会恶心,心里发毛
    因为不设置长度的约束,那么Label的长度在超过IPhone的手机屏幕的时候会让界面会看不到

    解决方案

    设置它的长度约束,并且在不超过屏幕的宽度时自适应长度。


    • Label1设置右边Trailing与SuperView的Trailing关系,SuperView Trailing>=SubView Trailing
    • Label2设置左边leading与SuperView的leading关系,SuperView leading >= SubView leading

      警告消失,好爽

    如果两者在不关联的情况下,是没有问题的

    那么开始定制需求,

    Label2 leading 在Label1 trailing之后Horizontal Spacing (10)的位置,并且其他的约束不变,加入这个约束



    报错尼玛这没法忍


    • 直译成中文就是“内容拥抱优先级”,这里就叫做“内容环绕优先级”从字面意思上来看就是两个视图,谁的“内容环绕优先级”高,谁就优先环绕其内容
    • 警告的原因是这两个控件的内容环绕优先级都是一样的。

    为什么会这样?

    • 两个都有约束,并且一个向右自动对齐,一个向左自动对齐,并且Label2在Label1水平之后的一个固定位置
    • 那么Label1的右边设置的是SuperView Trailing>=SubView Trailing Label2设置了Leading在Label1的trailing的10固定位置,发生了冲突,那么是使用Label1的约束呐?还是Label2的约束?
    • 优先级的作用是,在同一层级,两个控件都设置好约束,一个leading、top一个trailing、top 中间的约束是固定10的间距,两个控件的距离并不一定是10,那么是label1拉伸、压缩,还是Label2拉伸、压缩?还是它们同时拉伸、压缩。这就要设置内容环绕优先级。
      呐呢很绕口?



      值越大,内容环绕优先级越高,内容环绕优先级越低就越会被拉伸、压缩

    解决方案

    • 在约束的Label2的Content Hugging Priority的优先级设置高,将251改成 250,Label1的“内容环绕优先级”高,那么Label2就要环绕着Label1


    相关文章

      网友评论

          本文标题:XIB同一层级,两个Label的Content Hugging

          本文链接:https://www.haomeiwen.com/subject/uvjujftx.html