TABAnimated 瀑布流適配方案
前言
最近有不少小伙伴感猛,希望TABAnimated適配瀑布流。
本文將說(shuō)明瀑布流適配方案和使用方式
適配原理
瀑布流是一種自定義UICollectionViewLayout,計(jì)算規(guī)則是不需要TABAnimated所關(guān)心的夸政。
但是為了提供一套瀑布流機(jī)制绘沉,通常開(kāi)發(fā)者會(huì)通過(guò)代理,給到使用方岂昭,比如高度以现,每行幾個(gè)row。
基本原理
這里設(shè)計(jì)到兩種策略選擇。
一種是瀑布流布局私有化邑遏,開(kāi)發(fā)者需要使用TABAnimated內(nèi)置的瀑布流計(jì)算方式佣赖。這個(gè)因?yàn)樾枰_(kāi)發(fā)者修改源代碼,所以沒(méi)有考慮记盒。
第二種是開(kāi)發(fā)者將瀑布流SEL傳遞給TABAnimated憎蛤,TABAnimated切面管理動(dòng)畫(huà)時(shí)的瀑布流,不關(guān)心你們的瀑布流計(jì)算方式
但是纪吮,這個(gè)方法存在弊端俩檬,需要開(kāi)發(fā)者的瀑布流高度代理,參數(shù)嚴(yán)格按照瀑布流布局對(duì)象碾盟,視圖下標(biāo)棚辽,視圖寬度,依次排列冰肴,不可缺少不可更換位置晚胡。
命名可以隨意。
_collectionView.tabAnimated.waterLayoutHeightSel = @selector(waterFallLayout:heightForItemAtIndexPath:itemWidth:);
如何使用
使用animatedWaterFallLayoutWithCellClass初始化接口嚼沿。
傳入class類型估盘,高度列表和SEL
CGFloat height = CardCollectionViewCell.cellSize.height+50;
NSArray <NSNumber *> heightArray = @[@(height), @(height+20), @(height+20), @(height+20), @(height+20), @(height+20), @(height+20), @(height+20)];
TABCollectionAnimated *tabAnimated = [TABCollectionAnimated animatedWaterFallLayoutWithCellClass:CardCollectionViewCell.class
heightArray:heightArray
heightSel:@selector(waterFallLayout:heightForItemAtIndex:itemWidth:)];
注意
demo中內(nèi)置了瀑布流樣例,樣例使用了外部的瀑布流布局骡尽,框架內(nèi)不提供該布局遣妥。