天天看點

iOS開發之多表視圖滑動切換示例(仿"頭條"用戶端)---優化篇

  一、多張表視圖的記憶體問題解決方案

    借鑒TableView中Cell的重用機制,我們就把之前的Demo中ScrollView上的TableView進行複用,在我的部落格中用的是兩個TableView進行的交叉複用,當然你也可以用其他個數的TableView進行複用。下面是執行個體化ScrollView上的TableView的代碼,由下面的代碼可以看出隻執行個體化2個TableView, 并且把初始化後的TableView放在了TableView的初始化的位置上。而在原來的Demo中 -(void) initDownTables 方法會執行個體化多個TableView, 這也是記憶體問題的根源。

  上面的代碼減少了TableView的執行個體化,那麼我們如何進行複用呢? 我個人采取的是改變TableView在ScrollView上的Frame, 并且重新整理相應的TableView, 下面的代碼是把TableView移動到目前顯示頁數,并且重新整理TableView上的資料。代碼如下:

  上面的方法在那調用呢? 我是在ScrollView到達相應的頁數時進行tableView的移動和資料的重新整理。具體的調用代理方法如下:

  上面的代碼就可以實作TableView的複用了,并且減少了記憶體開支。如有更好的解決方案,還請提出,會及時的進行修改和改正。不希望大家隻是“吐槽"和提出一些問題,我期待和大家交流和學習的是一些問題更好的解決方案。

二、頭部按鈕達到一定數量時,布局的顯示方案。

  也是防新聞頭條的那種,按鈕多到一定個數時回使用ScrollView進行滾動。在本Demo中是超過6個按鈕就可以滑動,而6個以下是平分整個螢幕的寬度的。主要做的修改是把Button放到ScrollView上,找準時機,讓ScorllView進行滑動。下方的代碼是執行個體化TopScrollView,并把按鈕放到TopScrollView上:

  以上内容實在之前的Demo的基礎上做的簡單的修改,Demo還在完善中,後期會加上網絡請求,本地緩存等。發表部落格的初衷是與大家進行交流和學習,而不是看一些人進行吐槽。問題是在所難免,希望大家能提出問題所在,給出自己的解決方案,進行交流,共同進步。下方是Demo運作的效果:

iOS開發之多表視圖滑動切換示例(仿"頭條"用戶端)---優化篇
iOS開發之多表視圖滑動切換示例(仿"頭條"用戶端)---優化篇

上面是運作結果截圖,下方是層次截圖:

iOS開發之多表視圖滑動切換示例(仿"頭條"用戶端)---優化篇

  把新的代碼更新到了GitHub上,優化還在繼續,歡迎大家批評指正。