UItableview的優化,滑動的時候卡

在使用第三方應用時,卻經常遇到性能上的問題,普遍表現在滾動時比較卡,特別是cell中包含圖片的情況時。

實際上針對性地優化一下就可以解決tableview滑動的時候卡頓的問題:

1.使用不透明的視圖。不透明的視圖可以提高渲染的速度。可以將cell及其子視圖的opaque屬性設置為yes(默認值)。

2.不要重復創建不必要的cell。uitable只需要一屏幕的uitablevcell對象即可。因此在cell不可見的時候,可以將其緩存起來,而在需要的時候繼續使用它即可。注意:cell被重用的時候,需要調用setneedsdispalyinrect或者setneedsdisplay方法重繪cell。

3.減少動畫效果的使用,最好不要使用。

4.減少視圖的數目。cell包含了textlabel、detailtextlabel和imageview等view、而你還可以自定義一些視圖放在它的contentview里,創建它會消耗較多的資源,。并且也影響渲染的性能。

5.cell包含圖片、并且數目較多、使用自定義的cell速度會比默認的快很多。

6.不要做多余的繪制工作。在實現drawRect的時候,它的rect參數就是需要繪制的區域,這個區域之外的不需要進行繪制。

7.預渲染圖像。

如果上訴幾點做到之后,當新的圖像出現的時候還是有點卡頓的現象,那么可以在圖像上下文中畫。導出UIimage對象,然后再繪制到屏幕。使用異步繪制

8.不要阻塞主線程。tableview在更新數據的時候,整個界面卡住不動,完全不響應用戶請求。常見的是網絡請求,等待時間長待數秒。

解決辦法:使用多線程,讓子線程去執行這些函數或者方法。

注意:當下載線程數超過2的時候,會顯著影響主線程的性能。所以在不需要響應用戶請求的時候,下載線程可以增加到5,不建議再增加了,以加快下載速度。如果用戶正在交互,應該把線程數量控制在2個以內。

9.提前計算并緩存好高度,因為heightforrowatindexpath調用非常的頻繁。

10.選擇正確的數據結構:學會選擇會業務場景最適合的數組結構是寫出高效代碼的基礎。比如,數組:有序的一組值。使用索引來查詢很快,使用值查詢很慢,插入/刪除很慢。字典:存儲鍵值對,用鍵來查找比較快。集合:無序的一組值,用值來查找比較快,插入/刪除很快。

11.gzip/zip壓縮:當從服務器下載相關附件時,可以通過gzip/zip壓縮后再下載,使得內存更小,下載速度更快。

如何為在tableview的cell中嵌套collectionview?

用自定義的繼承于UItableviewcell的類,在initwithframe的構造方法中,初始化自定義繼承自UIcollectionview的類。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,259評論 4 61
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,217評論 30 472
  • 感恩磬叔對我的提醒,其實從他身上我還是能夠學到很多的,他什么事都不會當年拒絕別人,但是一轉身也會有所抱怨,然后自己...
    楚澤清荷閱讀 192評論 0 0
  • 微出汗,好久不跑了。 三公里。 安靜,去吃早餐!
    來自B612的毛毛閱讀 147評論 0 0
  • 工作效益與報酬掛鉤 想要高工資 得看付出了多少 通過正確的方法得到屬于自己的高工資。
    膠州寶龍DDM劉夢月閱讀 199評論 0 0