本文將給你們介紹AutoLayout的Content Hugging Priority,說通俗一點就是"視圖的抗拉伸優先級". 說到Content Hugging Priority不得不提Content Compression Resistance(抗壓縮優先級),我會在下一篇文章詳細來介紹它git
許多開發者可能對這個屬性比較陌生,這個屬性對有intrinsic content size的控件(例如button,label)很是重要. 注:具備intrinsic content size的控件當你設置內容後,它能夠根據內容多少來調整本身大小.github
抗拉伸優先級, 值越小,視圖越容易被拉伸spa
當一個視圖上有多個intrinsic content size的控件動態尺寸,在這幾個視圖內容總和,不夠填充父視圖區域時,此屬性能夠控制優先拉伸哪一個視圖內容.code
1.新建工程,咱們添加一個固定大小的視圖view,在這個view上放2個label,分別爲紅綠,分別對其添加以下約束:cdn
紅label約束:上0,左0,右0
綠label約束:上0,左0,右0,下0
複製代碼
均不給高度約束,高度由label文字多少本身決定, 此時你會發現,添加完以上約束後,會報下面錯誤:blog
這個錯誤的意思是說:開發
注:本篇文章主要講Content Hugging Priority抗拉伸優先級, Content Compression Resistance抗壓縮優先級將放在下一篇文章來詳細介紹)
get
下面咱們依次修改這2個label 縱向Content Hugging Priority值分別爲:it
紅label: vertical: 252
綠label: vertical: 251
複製代碼
添加完成後錯誤消失,效果以下: io
由於綠色label縱向抗拉伸優先級爲251,小於紅色label的值252,全部當2個label內容不夠填充父視圖區域時,綠色label高度被拉伸了
下面咱們來調換2個label縱向拉伸優先級:
紅label: vertical: 251
綠label: vertical: 252
複製代碼
來看下效果:
此時,紅色label抗拉伸值小於綠色,全部紅色label被拉伸了
Content Hugging Priority 抗拉伸優先級 值越小,越容易被拉伸, 此屬性在不手動計算UITableViewCell高度,UITableViewCell動態高度時,會起到重要做用,後面會結合實例來詳細介紹.