iOS開發之多表檢視滑動切換示例(仿”頭條”客戶端)—優化篇

青玉伏案發表於2015-12-25

前幾天釋出了一篇iOS開發之多表檢視滑動切換示例(仿”頭條”客戶端)的部落格,之所以寫這篇部落格,是因為一位iOS初學者提了一個問題,簡單的寫了個demo做了個示範,讓其在基礎上做擴充套件和改進。被CocoaChina中iOS模組所收錄實在出乎我的意料,連結地址(http://www.cocoachina.com/ios/20150706/12370.html),在CocoaChina上看了下面的評論,Demo的問題確實有,優化和改進的空間也是蠻大的。首先記憶體問題是必須考慮的,不能把這麼多的TabalView例項化後新增到ScrollView上,只要是做過iOS的小夥伴這個問題應該不難看出。再一個是頭部按鈕多了以後會擠在一起,還有如果新增上網路請求的話,沒做本地快取,等一系列的問題。

在今天的部落格中要做兩個優化。第一:多個TableView的記憶體問題。第二:頭部多個按鈕的顯示問題。今天的部落格的內容是在上一篇部落格iOS開發之多表檢視滑動切換示例(仿”頭條”客戶端)做的優化和擴充套件,同時也會在gitHub上更新一下Demo的程式碼,廢話不多說,開始今天部落格的主題。

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

借鑑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執行的效果:

上面是執行結果截圖,下方是層次截圖:

把新的程式碼更新到了GitHub上,優化還在繼續,歡迎大家批評指正。
Demo在GitHub上的分享地址:https://github.com/lizelu/SliderTabBar

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

iOS開發之多表檢視滑動切換示例(仿”頭條”客戶端)—優化篇

相關文章