起因
在使用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
网友评论