storyboard中的約束優先級

在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:解決衝突時是否需要驗證。
Priority的值默認分爲三個等級 Required(1000)、High(750)、Low(250),其實可以輸入任意其他數字。
好,回到需求,只要把紅色label的水平方向壓縮阻力優先級的值改成任意大於綠色label壓縮阻力的值即可。如果紅色label的內容太多,那就會把綠色label給擠沒掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章