实现简单瀑布流布局(一)

作者: imbaWales | 来源:发表于2017-04-24 00:03 被阅读236次

关于瀑布流布局网上很多人都写了, 但是自己封装一个, 可控性更高, 故自己写一个, 以后的项目可以直接拖进去使用.

效果图如下:


我是gif图 Paste_Image.png
实现思路如下(具体代码可到文章结尾处链接里下载demo):

1.继承系统的flowLayout自定义一个flowLayout, 重写三个方法.
// 在这个方法里面设置好所有cell的布局
. - (void)prepareLayout;
// 在这个方法里面告诉系统已设置好的布局
. - (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
// 在这个方法里面设置滚动区域
. - (CGSize)collectionViewContentSize;

2.重点是在prepareLayout里面, 写布局代码:
记录每一列的最大高度(从上到下), 我用数组来记录. 然后选出高度最小的那一列, 把下一个cell添加到该列下面.再记录每一列的最大高度, 把下一个cell添加到高度最小的那一列下面, 依次类推, 实现瀑布流.

使用方法:

把demo里面的JWWaterFallLayout文件夹直接拖到你的项目即可.


导入JWWaterFallLayout.h后用JWWaterFallLayout来创建collection view,
该layout额外提供了col属性来设置列数(根据列数自动计算cell宽),
该layout额外提供了数据源<JWWaterFallLayoutDataSource>方法来设置每个cell的高度(可根据index来设置对应第几个的cell高度)

示例代码:

JWWaterFallLayout *layout = [[JWWaterFallLayout alloc] init];
layout.minimumLineSpacing = 10;
layout.minimumInteritemSpacing = 10;
layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
layout.col = 4; // 设置列数
layout.dataSource = self; // 设置数据源
        
_collectionV = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout];
#pragma mark - JWWaterfallLayout DataSource
// 设置每个cell的高度
- (CGFloat)waterfallLayoutWithLayout:(JWWaterFallLayout *)layout itemIndex:(NSInteger)index{
    
    return arc4random_uniform(100) + 150;
}

Demo下载地址(希望路过顺手star一个嘻嘻):
https://github.com/imbawales/JWWaterfallLayout

相关文章

  • 瀑布流布局 的学习

    1- 实现瀑布流布局效果 瀑布流效果瀑布流代码木桶布局效果木桶布局代码瀑布流布局 2- 实现一个新闻瀑布流新闻...

  • 瀑布流布局_木桶布局

    题目1: 实现一个瀑布流布局效果 瀑布流 题目2:实现木桶布局效果 木桶布局 题目3:**实现一个新闻瀑布流新闻网...

  • 瀑布流布局

    题目1: 实现一个瀑布流布局效果瀑布流代码题目2:实现木桶布局效果木桶布局代码题目3:实现一个新闻瀑布流新闻网站,...

  • 瀑布流和懒加载结合

    实现一个瀑布流布局效果 瀑布流

  • CollectionView瀑布流

    简单的瀑布流实现。github地址 各种不规则的布局都可以利用UICollectionVIewLayout来实现,...

  • 瀑布流布局

    瀑布流布局 实现一个瀑布流布局效果 预览 根据课程视频实现一个新闻瀑布流新闻网站,查看效果

  • 瀑布流布局

    题目1:实现一个瀑布流布局效果 jsbin-实现瀑布流布局 题目2:根据课程视频实现一个瀑布流新闻网站,查看效果 ...

  • 「实战」蘑菇街 PC 端首页,瀑布流布局的实现原理与细节技巧

    零、介绍 这篇文章主要是介绍网站页面瀑布流布局的实现,主要包括: 瀑布流是什么 瀑布流的实现原理 瀑布流的使用场景...

  • 瀑布流布局&木桶布局

    一、实现一个瀑布流布局效果。 二、实现木桶布局效果。 预览 三、实现一个新闻瀑布流新闻网站。查看效果 jsonp ...

  • 瀑布流布局_木桶布局

    1.实现一个瀑布流布局效果 JQ 瀑布流-1 效果 2.实现木桶布局效果 JQ 木桶布局 效果 3.实现一个新闻瀑...

网友评论

    本文标题:实现简单瀑布流布局(一)

    本文链接:https://www.haomeiwen.com/subject/rfkuzttx.html