在Masonary中也可以設置約束的優先級,如make.left.equalTo(weakSelf.view.mas_left).offset(20).priority(250)
中的priority
。
在Storyboard中也可以,舉個🌰:父視圖上有imgView和兩個label,現要求兩個label的寬度隨內容且不超出,另必須保證紅色label中的內容顯示完整。
storyboard拖控件就不說了,直接從約束開始。
imgView: left、right、top、height、width
綠色label:left、center-Y、right、height
紅色label:left、center-y、right、height
這個時候storyboard會報錯,因爲兩個label的寬度無法定位。如下圖。
提示說,降低紅色label的水平方向壓縮阻力(即容易被壓縮)以確保在其他視圖之前可以被裁剪。
點擊 Change Priority,改變約束優先級。
這時我們可以看Size Inspector中,紅色label水平方向壓縮阻力由750降爲了749,說明在水平方向上,綠色label展示的優先級要高於紅色label。當然這和我們一開始的需求反了,待會兒再改。我們先看看Size Inspector中優先級的說明。
-
Content Hugging Priority:拉伸阻力,即抗拉伸。值越大,越不容易被拉伸。
-
Content Compression Resistance Priority:壓縮阻力,即抗壓縮。值越大,越不容易被壓縮。
-
Intrinsic Size:控件未設置寬高約束時用的。
-
Ambiguity:解決衝突時是否需要驗證。