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快 字串用法要點 轉義符和...