iOS layoutSubviews知識點匯集

2021-10-23 09:10:18 字數 1597 閱讀 1706

1. (cgsize)sizethatfits:(cgsize)size

2. (void)sizetofit

——————-

3. (void)layoutsubviews

4. (void)layoutifneeded

5. (void)setneedslayout

——————–

6. (void)setneedsdisplay

7. (void)drawrect

layoutsubviews在以下情況下會被呼叫:

1.init初始化不會觸發layoutsubviews但是是用initwithframe 進行初始化時,當rect的值不為cgrectzero時,也會觸發

2.addsubview會觸發layoutsubviews

3.設定view的frame會觸發layoutsubviews,當然前提是frame的值設定前後發生了變化

4.滾動乙個uiscrollview會觸發layoutsubviews

5.旋轉screen會觸發父uiview上的layoutsubviews事件

6.改變乙個uiview大小的時候也會觸發父uiview上的layoutsubviews事件

重新整理子物件布局

-layoutsubviews方法:這個方法,預設沒有做任何事情,需要子類進行重寫

-setneedslayout方法: 標記為需要重新布局,非同步呼叫layoutifneeded重新整理布局,不立即重新整理,但layoutsubviews一定會被呼叫

-layoutifneeded方法:如果,有需要重新整理的標記,立即呼叫layoutsubviews進行布局(如果沒有標記,不會呼叫layoutsubviews)

如果要立即重新整理,要先呼叫[view setneedslayout],把標記設為需要布局,然後馬上呼叫[view layoutifneeded],實現布局

在檢視第一次顯示之前,標記總是「需要重新整理」的,可以直接呼叫[view layoutifneeded]

重繪

-drawrect:(cgrect)rect方法:重寫此方法,執行重繪任務

-setneedsdisplay方法:標記為需要重繪,非同步掉用drawrect

-setneedsdisplayinrect:(cgrect)invalidrect方法:標記為需要區域性重繪

sizetofit會自動呼叫sizethatfits方法;

sizetofit不應該在子類中被重寫,應該重寫sizethatfits

sizethatfits傳入的引數是receiver當前的size,返回乙個適合的size

sizetofit可以被手動直接呼叫

sizetofit和sizethatfits方法都沒有遞迴,對subviews也不負責,只負責自己

layoutsubviews對subviews重新布局

layoutsubviews方法呼叫先於drawrect

layoutifneeded遍歷的不是superview鏈,應該是subviews鏈

drawrect是對receiver的重繪,能獲得context

docker 系列 Dock高階知識點文章匯集

書籍 docker 從入門到精通 這可能是最為詳細的docker入門 總結 麥子學院的教程 將 springboot 打包進 docker spring 官方的教程 docker 部署 springboot 專案整合 redis 映象做訪問計數demo docker 容器使用者管理 預設情況下,容器...

TestLink知識點Mantis知識點

testlink知識點 1 testlink系統提供了六種角色 a guest 只有讀的許可權,適合於檢視測試用例和測試需求,以及專案分析的使用者。b testdesigner 可以開展測試用例和測試需求的所有工作。c tester 只能執行測試用例。d senior tester 可以檢視和維護測...

python大一知識點 python知識點複習

放假歸來,這幾天複習了一下好久不用的python,總結了一下知識點。語法基礎tuple與list的異同都由多個元素組成 tuple由 組成,list由組成 tuple不可變,list可變 tuple表示的是一種結構,而list表示的是多個事物的集合 tuple操作比list快 字串用法要點 轉義符和...