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

起因

在使用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 Priority)