简单的实现几个代理方法和基本参数配置就可以快速实现完美瀑布流
// collectionView 的创建 设置代理并遵守 <YJWaterfallViewLayoutDataSource>
YJWaterfallViewLayout * collectionLayout = [[YJWaterfallViewLayout alloc] init];
collectionLayout.dataSource = self;
UICollectionView * collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:collectionLayout];
/** 要实现多少列瀑布流, 可以动态返回 */
- (NSInteger)waterFallColumnNumberInWaterFallLayout:(YJWaterfallViewLayout *)waterFallLayout;
/** 瀑布流列间距的设置, 可动态返回 */
- (CGFloat)waterFallColumnMarginInWaterFallLayout:(YJWaterfallViewLayout *)waterFallLayout;
/** 瀑布流的行间距的设置, 可动态返回 */
- (CGFloat)waterFallRowMarginInWaterFallLayout:(YJWaterfallViewLayout *)waterFallLayout;
/** 瀑布流外边距的设置, 可动态返回 */
- (UIEdgeInsets)waterFallEdgeInsetsInWaterFallLayout:(YJWaterfallViewLayout *)waterFallLayout;
/** 必须实现的代理 Return 每个Item的Size */
- (CGSize)waterFallLayout:(YJWaterfallViewLayout *)waterFallLayout sizeOfItemAtIndex:(NSUInteger)index;