緣由:masonry內部會判斷若是是系統的約束就不處理,反而添加了新的約束,這樣必然會出現約束衝突問題。佈局
緣由:咱們要建立一個view讓tableHeaderView=view,並在view上添加子的咱們須要的那個總體view。而後約束時候要下降優先級。這樣當tableHeaderView在height=0瞬間不至於約束出問題。ui
緣由: 在使用tableView估計高度時候,系統會自動計算出cell的高度並給UITableViewCellContentView添加一個高度的約束。當重用時候咱們更新了cell子視圖的高度致使整個cell高度變高和一開始的系統自動計算的高度約束衝突。這時候咱們下降更新的子視圖的高度約束的優先級能夠避免和以前系統計算出來的cell高度約束衝突。it
緣由:一行佈局多個lab時候若是咱們不設置兩個lab之間的約束,那麼當兩個lab要顯示很長的文字時候會出現兩個lab重疊現象,咱們固然不但願用戶看到這種顯現象,因此兩個lab中間必定要設置約束距離。io
當咱們設置了兩個lab之間的約束距離後就要設置好兩個lab的抗壓縮抗拉伸優先級。由於lab有自動適應尺寸的特性。因此咱們利用抗拉伸優先級來控制容許哪一個lab的文字寬度小於控件自身高度,固然抗拉伸優先級較低的lab的文字寬度會小於控件自己的寬度。(若是不設置,系統將不知道到底哪一個lab文字寬度能夠小於控件自身的寬度,因此就出現了約束警告問題,圖層中會有歎號)table
以後咱們要設置好相應的抗壓縮優先級,決定當文字多的狀況下,到底哪一個要進行壓縮顯示省略號,固然抗壓縮優先級小的那個要顯示省略號。class
默認的抗拉伸優先級大小是250(UILayoutPriorityDefaultLow)。
默認的抗壓縮優先級大小是750UILayoutPriorityDefaultHigh)
還有兩位兩個優先級的宏能夠用(UILayoutPriorityFittingSizeLevel=50),(UILayoutPriorityRequired=1000)統計