請支持原創, 如需轉載, 請注明出處@TEASON
之前的文章里有說要寫關于UITableView
見解的兩篇, 上一篇在這里, 這是下集.
下面的圖是網易新聞客戶端, 這種結構的首頁挺多的, 我仿照寫了一下, 總結了下思路, 要實現不是特別困難, 不過有一些細節和問題我覺得有必要注意.
下面是我認為需要注意的地方 .
1.首先, 他是由什么控件組成的 ?
上下兩個scrollView, 上面那個控制標簽, 下面控制內容, 互相對應切換.
2.如何重用contentView
如果是scrollview, 他里面的內容視圖(contentView)要考慮重用, 不然極度浪費內存 .
可能有兩種可行的解決方案:
方案(1)外部是scrollView
,內容用三個tableView
來回切換內容對應顯示. 這個思路和這個demo(無限循環scrollview)一樣一樣, 他的優勢是可以做成無限循環, 能從最后一張切換到第一張 .
方案(2)用collectionView
實現contentView
重用. 每一個contentView
作為一個collectionViewCell
. collectionView
是scrollview
的子類,所以和第一條不矛盾, 能否通過繼承layout
實現這種表現.
3.分離tableview表示邏輯
這在我的一篇文章中提及, 不過這次我沒有用block
再回調回ctrller
里, 這樣比較適合這個項目, 方便讓每個handler
控制一個tableview
的表示邏輯. 分工比較明確.
于是, 在框架出來之后, 只需要傳入handler
的List
即可.
demo地址在此
demo由于我是用方案一寫的, 精力在自己寫重用tableView
上用了好多.不過demo里主要功能和思路都有所體現了 . 歡迎follow我
關于方案二的版本重寫collectionViewLayout , 寫起來省事很多, 這個布局甚至能用storyboard直接0行代碼弄出來布局, 實現起來相當容易,demo就不貼了. 但方案二不能循環. 方案一實現相對比較難, 而且主要是手動實現了view的重用和循環. 故給出方案一 .
此外, 用UIPageViewController也可以解決,應該是方案三.做起來也比較簡單.
但. 我認為無論是哪一種方案. 都應該考慮controller過多內存緊張的處理. 我認為是用緩存做是最好的. 其實無論哪一種方案, 重要的是思考過程, 如果急于求成, 類似的框架網上隨便找找一大堆, 但是不思考純粹貼過來就沒有意義了. 是不是?