• iOS:UICollectionView的扩展应用


    一、介绍

    CollectionView是iOS中一个非常重要的控件,它可以实现很多的炫酷的效果,例如轮播图、瀑布流、相册浏览等。其实它和TableView很相似,都是对cell进行复用,提高系统性能。然后也有一点不同的地方,CollectionView的展示由布局决定。但是它只是提供默认的布局方式流式布局,我们可以自定义布局,实现自己想要的各种效果。

    二、策略

    自定义的布局方式需要选择性重写CollectionViewLayout中的方法,实现自己需要的效果,方法如下所示:

    //每一次布局前的准备工作
    -(void)prepareLayout
    
    //设置collectionView滚动区域 
    -(CGSize)collectionViewContentSize
    
    //允许每一次重新布局   
    -(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
    
    //布局每一个属性
    -(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
    
    //布局所有item的属性,包括header、footer
    -(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect

    三、效果

    • 圆式布局:将所有的图片环绕成一圈,可以用在相册中

              

    • 堆叠式布局:将所有的图片堆叠起来,只有最上面的三张图片可以看到,例如”探探app“

           

    • 线式布局:将图片左右轮播滚动显示,图片滚到离中间一定距离时,图片开始放大 

           

    • 瀑布流布局:图片相错排列,增加美感,例如”蘑菇街“

          

    四、CocoaPods

    pod 'XYQCollectionLayout', '~> 1.0.0'

    五、使用

    //使用圆式布局
    _collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:[[CustomCircleLayout alloc]init]];
    
    //使用线式布局 
    _collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:[[CustomLineLayout alloc]init]];
    
    //使用堆叠式布局  
     _collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:[[CustomStackLayout alloc]init]];
    
    //使用瀑布流布局,比较特别,还需要实现代理,设置图片真实宽高,详见demo
    _collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:[[WaterFlowLayout alloc]init]];

    demo下载地址:https://github.com/xiayuanquan/XYQCollectionLayout

  • 相关阅读:
    十道海量数据处理面试题与十个方法大总结
    TopK的一个简单实现
    Spark1.0.0 学习路线指导
    Apache Spark源码走读之1 -- Spark论文阅读笔记
    倾情大奉送--Spark入门实战系列
    分布式发布订阅消息系统 Kafka 架构设计
    hive入门学习线路指导
    (5.3.1)数据库迁移——数据库迁移解决孤立用户与权限问题
    Shell初学(八)linux下的ACL
    Shell初学(七)linux账户管理/群组管理
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/6522239.html
Copyright © 2020-2023  润新知