1.原理:
uitableview是uiscrollview的子類,因此它可以自動響應滾動事件(一般為上下滾動)。 它內部包含0到多個uitableviewcell物件,每個table cell展示各自的內容。當新cell需要被顯示時,就會呼叫tableview:cellforrowatindexpath:方法來獲取或建立乙個cell;而不可視時,它又會被釋放。由此可見,同一時間其實只需要存在乙個螢幕長度的cell物件即可,不需要為每一行建立乙個cell。 此外,uitableview還可以分為多個sections,每個區段都可以有自己的head、foot和cells。而在定位乙個cell時,就需要2個字段了:在哪個section,以及在這個section的第幾行。這在ios sdk中是用nsindexpath來表述的,uikit為其新增了indexpathforrow:insection:這個建立方法。
2.優化:
1>重用機制:
uitableview 通過重用單元格來達到節省記憶體的目的,一開始會載入顯示出來的cell,如果滾動uitableview,會將離開螢幕的cell放到快取池。如果出現新的cell,首先會從快取池裡取,如果沒有取出來,就自己建立。
2>不要重複建立不必要的table cell。
nsarray *indexpaths = [self.tableview indexpathsforvisiblerows]; for (nsindexpath *visibleindexpath in indexpaths) } // 也可不遍歷,直接與頭尾相比較,看是否在中間即可。
最後還是前面所說過的insertrowsatindexpaths:withrowanimation:方法,插入新行需要在主線程執行,而一次插入很多行的話(例如50行),會長時間阻塞主線程。而換成reloaddata方法的話,瞬間就處理完了。
UITableView效能優化
uitableview效能優化 一直以來uitableview效能一直是個很嚴重的問題,uitableview效能優化的幾個關鍵點如下 1,盡量使用不透明的檢視。2,重用uitableviewcell。3,減少子檢視數量,自定義uitableviewcell,並在其drawrect 中自行繪製 更好...
如何優化UITableView效能
使用不透明檢視。不透明的檢視可以極大地提高渲染的速度。因此如非必要,可以將table cell及其子檢視的opaque屬性設為yes 預設值 其中的特例包括背景色,它的alpha值應該為1 例如不要使用clearcolor 影象的alpha值也應該為1,或者在畫圖時設為不透明。不要重複建立不必要的t...
UITableView的效能優化
2019獨角獸企業重金招聘python工程師標準 第二個 實現的思路,首先我們在建立uitableviewcell控制項時,我們要先到快取裡去找一下有沒有對應型別uitableviewcell這個控制項,如何才能找到呢,那就需要識別碼了,搞個id就可以解決這個問題,如果沒有對應型別就建立這個控制項,...