
起因
在使用xib的過程中,在同一層級創(chuàng)建兩個Label:Label1、Label2,并且我需要Label2在Label1的后面10之后,并且兩個Label都是自適應(yīng)長度、高度。

設(shè)置好約束以后會有兩個警告

警告原因
有的時候就是DT,看見黃色的就會惡心,心里發(fā)毛
因為不設(shè)置長度的約束,那么Label的長度在超過IPhone的手機屏幕的時候會讓界面會看不到
解決方案
設(shè)置它的長度約束,并且在不超過屏幕的寬度時自適應(yīng)長度。

- Label1設(shè)置右邊Trailing與SuperView的Trailing關(guān)系,SuperView Trailing>=SubView Trailing
- Label2設(shè)置左邊leading與SuperView的leading關(guān)系,SuperView leading >= SubView leading
警告消失,好爽
如果兩者在不關(guān)聯(lián)的情況下,是沒有問題的
那么開始定制需求,
Label2 leading 在Label1 trailing之后Horizontal Spacing (10)的位置,并且其他的約束不變,加入這個約束

報錯尼瑪這沒法忍

- 直譯成中文就是“內(nèi)容擁抱優(yōu)先級”,這里就叫做“內(nèi)容環(huán)繞優(yōu)先級”從字面意思上來看就是兩個視圖,誰的“內(nèi)容環(huán)繞優(yōu)先級”高,誰就優(yōu)先環(huán)繞其內(nèi)容
- 警告的原因是這兩個控件的內(nèi)容環(huán)繞優(yōu)先級都是一樣的。

為什么會這樣?
- 兩個都有約束,并且一個向右自動對齊,一個向左自動對齊,并且Label2在Label1水平之后的一個固定位置
- 那么Label1的右邊設(shè)置的是SuperView Trailing>=SubView Trailing Label2設(shè)置了Leading在Label1的trailing的10固定位置,發(fā)生了沖突,那么是使用Label1的約束吶?還是Label2的約束?
-
優(yōu)先級的作用是,在同一層級,兩個控件都設(shè)置好約束,一個leading、top一個trailing、top 中間的約束是固定10的間距,兩個控件的距離并不一定是10,那么是label1拉伸、壓縮,還是Label2拉伸、壓縮?還是它們同時拉伸、壓縮。這就要設(shè)置內(nèi)容環(huán)繞優(yōu)先級。
吶呢很繞口?
值越大,內(nèi)容環(huán)繞優(yōu)先級越高,內(nèi)容環(huán)繞優(yōu)先級越低就越會被拉伸、壓縮
解決方案
-
在約束的Label2的Content Hugging Priority的優(yōu)先級設(shè)置高,將251改成 250,Label1的“內(nèi)容環(huán)繞優(yōu)先級”高,那么Label2就要環(huán)繞著Label1



