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