layoutSubViews實踐

(1)什麼時候調用layoutSubViews


1、addSubview,view和它的子view的layoutSubView都會被調用。

2、調用setNeedsLayout 調用自己的layoutSubView
3、改變自己的size會調用自己的layoutSubView
4、scroll,可以通過這個特性實現UICollectionView,或者的UITableView。
5、轉屏未實驗

(2)問題:
view1
view1.1是view1的子view
view1.1.1是view1.1的子view

在view1的layoutSubView中初始化view1.1.1並將它設置成view1.1的子view。
當view1.1.1想讓view1.1重新佈局自己的時候,不得不調用view1的setNeedLayout,照成view1.1.1不斷重繪。或者形成roop。
解決方法:在view1.1中的layoutSubView中添加它的子View。

best practice
1、在自己的layoutSubView中添加自己的子View。
2、在layoutSubview中慎用init創建對象。要知道layoutSubview可能被調用多次,有可能對一個view重複創建並佈局。不要認爲惡俗的使用removeAllSubviews就能解決一切問題。
3、不要在layoutSubView中直接或間接調用setNeedLayout

參考:http://blog.logichigh.com/2011/03/16/when-does-layoutsubviews-get-called/

轉自:http://blog.csdn.net/olo721727175/article/details/15341195

發佈了13 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章