參考鏈接layoutSubviews總結(jié) - BSPLover的專欄 - 博客頻道 - CSDN.NET
1.drawRect:方法
系統(tǒng)固定的方法侮攀。在view的內(nèi)容發(fā)生改變的時候調(diào)用此方法可以對view進(jìn)行重新繪制霞溪。不可以直接調(diào)用赁炎。通過setNeedDisplay 或者 setNeedsDisplay:方法可以調(diào)用該方法泳秀。
比較吃內(nèi)存
在此方法內(nèi)可以使用CoreGraphics對view進(jìn)行繪制的一些基本操作。
2.layoutsubviews方法
作用:調(diào)整子視圖的位置劳淆。(附:子視圖的添加最好不要寫在init方法中)
調(diào)用時機(jī):
a:直接調(diào)用setLayoutSubviews兰伤。
b:addSubview的時候。
c:當(dāng)view的frame發(fā)生改變的時候捻激。
d:滑動UIScrollView的時候制轰。
e:旋轉(zhuǎn)Screen會觸發(fā)父UIView上的layoutSubviews事件。
f:改變一個UIView大小的時候也會觸發(fā)父UIView上的layoutSubviews事件胞谭。
如何手動調(diào)用該方法垃杖?
通過setNeedsLayout或者layoutIfNeed方法。
-setNeedsLayout方法: 標(biāo)記為需要重新布局丈屹,異步調(diào)用layoutIfNeeded刷新布局调俘,不立即刷新,但layoutSubviews一定會被調(diào)用
-layoutIfNeeded方法:如果泉瞻,有需要刷新的標(biāo)記脉漏,立即調(diào)用layoutSubviews進(jìn)行布局(如果沒有標(biāo)記苞冯,不會調(diào)用layoutSubviews)
3.drawRect 和 layoutSubviews的區(qū)別袖牙?
前者是管理在視圖上繪制的內(nèi)容
后者是管理其子視圖的相對位置信息