關(guān)于UIView的幾個(gè)方法

參考鏈接layoutSubviews總結(jié) - BSPLover的專欄 - 博客頻道 - CSDN.NET

1.drawRect:方法

系統(tǒng)固定的方法。在view的內(nèi)容發(fā)生改變的時(shí)候調(diào)用此方法可以對(duì)view進(jìn)行重新繪制。不可以直接調(diào)用。通過setNeedDisplay 或者 setNeedsDisplay:方法可以調(diào)用該方法。

比較吃內(nèi)存

在此方法內(nèi)可以使用CoreGraphics對(duì)view進(jìn)行繪制的一些基本操作。

2.layoutsubviews方法

作用:調(diào)整子視圖的位置。(附:子視圖的添加最好不要寫在init方法中)

調(diào)用時(shí)機(jī):

a:直接調(diào)用setLayoutSubviews。

b:addSubview的時(shí)候。

c:當(dāng)view的frame發(fā)生改變的時(shí)候。

d:滑動(dòng)UIScrollView的時(shí)候。

e:旋轉(zhuǎn)Screen會(huì)觸發(fā)父UIView上的layoutSubviews事件。

f:改變一個(gè)UIView大小的時(shí)候也會(huì)觸發(fā)父UIView上的layoutSubviews事件。

如何手動(dòng)調(diào)用該方法?

通過setNeedsLayout或者layoutIfNeed方法。

-setNeedsLayout方法: 標(biāo)記為需要重新布局,異步調(diào)用layoutIfNeeded刷新布局,不立即刷新,但layoutSubviews一定會(huì)被調(diào)用

-layoutIfNeeded方法:如果,有需要刷新的標(biāo)記,立即調(diào)用layoutSubviews進(jìn)行布局(如果沒有標(biāo)記,不會(huì)調(diào)用layoutSubviews)


3.drawRect 和 layoutSubviews的區(qū)別?

前者是管理在視圖上繪制的內(nèi)容

后者是管理其子視圖的相對(duì)位置信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容