1 理解自身內(nèi)容尺寸約束與抗壓抗拉

自身內(nèi)容尺寸約束:一般來說,要確定一個(gè)視圖的精確位置,至少需要4個(gè)布局約束(以確定水平位置x、垂直位置y、寬度w和高度h)。但是,某些用來展現(xiàn)內(nèi)容的用戶控件,例如文本控件UILabel、按鈕UIButton、圖片視圖UIImageView等,它們具有自身內(nèi)容尺寸(Intrinsic Content Size),此類用戶控件會(huì)根據(jù)自身內(nèi)容尺寸添加布局約束。也就是說,如果開發(fā)者沒有顯式給出其寬度或者高度約束,則其自動(dòng)添加的自身內(nèi)容約束將會(huì)起作用。因此看似“缺失”約束,實(shí)際上并非如此。

關(guān)于自身內(nèi)容尺寸約束,簡單來說就是某些用來展現(xiàn)內(nèi)容的用戶控件,它們會(huì)根據(jù)自身內(nèi)容尺寸添加布局約束。

自身內(nèi)容尺寸約束的抗擠壓與抗拉抻效果。彈簧會(huì)有自身固有長度,當(dāng)有外力作用時(shí),彈簧會(huì)抵抗外力作用,盡量接近固有長度。

抗拉抻:當(dāng)外力拉長彈簧時(shí),彈簧長度大于固有長度,且產(chǎn)生向內(nèi)收的力阻止外力拉抻,且盡量維持長度接近自身固有長度。

抗擠壓:當(dāng)外力擠壓彈簧時(shí),彈簧長度小于固有長度,且產(chǎn)生向外頂?shù)牧ψ柚雇饬D壓,且盡量維持長度接近自身固有長度。

關(guān)于抗壓抗拉,就是布局沖突需要犧牲某些控件的某些寬度或者高度約束時(shí),抗壓高的控件越不容易被壓縮,抗拉高的控件越不容易被拉升。即自身布局對(duì)抗外界布局的能力。

樣例:

一種常見的業(yè)務(wù)場景是用戶修改地址,在輸入新地址之前先讀取用戶之前的地址作為填充。UI實(shí)現(xiàn)是水平平

網(wǎng)友評(píng)論