一個好用的瀑布流

其實,即使是用Google來搜“iOS 瀑布流”前面的幾條基本上都沒法用。

在github上也找不到個好用的“瀑布流”。

可能這個效果本來不叫“瀑布流”吧。

問了幾個人,也都說這玩意就叫“瀑布流”。

為了讓大家用起來方便,沒有效率問題,我擼了一個“瀑布流”,并且就叫“瀑布流”。

基于UICollectionView寫了個layout,用起來很簡單,接口也只有一個。性能方面,參考了陽神的優化技巧。代碼在這:github?


關于這個“瀑布流”

首先它用起來很簡單。你的cell需要用autolayout,然后配置Collection的layout,不需要設置其DataSource。

寫起來大概就是這個樣子。

_dataDelegate = [[WELFallDelegate alloc] initWithCollection:_collection cellCount:^NSInteger{

??? return _datas.count;

} configureCell:^UICollectionViewCell *(WELFallLoadCell loadCell, NSInteger index) {

??? UICollectionViewCell *cell = loadCell(@"youCellID");

??? cell.textLabel.text = _data[index];

??? return cell;

}];

這里只提供了一行2個cell的實現。因為我覺得一行放三個cell顯得很擁擠。而兼容iPad又是另一回事。

效率方面,為了使用起來簡單,這里會根據cell的autolayout自動算出大小,并在一些地方做了緩存,避免了重復計算。因為是繼承了UICollectionViewLayout,所以免去了一些多余的計算。

最后,每個cell的frame只計算一次,如果你需要重新計算布局,例如下拉刷新之類的操作,你需要使用UICollectionView的wel_reloadDataAndDiscardLayout方法。










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

推薦閱讀更多精彩內容

  • ios UICollectionView實現瀑布流 通過自定義collectionViewCell和重寫colle...
    ochenkai閱讀 1,640評論 0 2
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,246評論 4 61
  • 比較難的知識: 1.法的公布形式批準備案機關 2.無效合同損害國家利益(勞動合同欺詐,協迫) 3.合同死,條款活(...
    西風烈_78f5閱讀 154評論 0 0
  • 今天是世界讀書日,在四月。 在去往北京的路上,聽著廣播里關于讀書的談論或倡導,把我的思緒帶回過往,也觸摸著現在。 ...
    寸丹心閱讀 387評論 4 3
  • 人一生中遇到一個藍顏知已,是多么的不容易。要好好珍惜。 他是我的初中同學,個子高高的,皮膚有點黑,...
    顏如花閱讀 390評論 0 1