1. Intrinsic Content
在使用AutoLayout的時候,UILabel 我們只需要設(shè)定他的position材失,不需要設(shè)置寬高痕鳍,而一個自定義的UIView,我們不僅僅需要位置龙巨,還需要設(shè)定寬高笼呆,這是為什么呢?
每一個View 都有一個特別的屬性叫做Intrinsic Content Size旨别,這個可以理解成是一個View的最合適而且最小的寬度和高度抄邀。對于UILabe來說,就是至少得把我設(shè)定的文字都顯示完整吧昼榛,所以系統(tǒng)只需要知道UILabel的位置。而UIView的Intrinsic Content是(0,0)所以需要設(shè)置UIView的寬高(或是設(shè)定周圍的邊距等等其他關(guān)系可以讓系統(tǒng)知道這個View應(yīng)該多寬胆屿,多高)奥喻。而Intrinsic Content Size,也是未來自定義View顯示到Xcode中必須設(shè)置的屬性之一非迹。
注意??:TodayView中 如果沒有設(shè)置Bottom Layout Guide相關(guān)的Constraint环鲤,view的intrinsic content會跟屏幕分辨率一樣
2. Steps of Display
在Autolayout中, 顯示一個view的步驟分為三步
- Update Constraints
- Layout Views
- Display
一般來說layoutSubviews負責(zé)布局憎兽,比如調(diào)整View之間的距離冷离,大小,drawRect負責(zé)繪制纯命,比如使用什么顏色西剥。而AutoLayout則是在layout之前增加了一個設(shè)定約束的過程,也就是上面提到了update constraints。