#
转载:https://www.jianshu.com/p/45ff718090a8
首先我们先看一下 我们今天要最终实现的效果图
UICollectionView的简单介绍
- UICollectionView的结构
1 | Cells |
- 由两个方面对UICollectionView进行支持。
- 和tableView一样,即提供数据的UICollectionViewDataSource以及处理用户交互的UICollectionViewDelegate。
- 另一方面,对于cell的样式和组织方式,由于collectionView比tableView要复杂得多,因此没有按照类似于tableView的style的方式来定义,而是专门使用了一个类来对collectionView的布局和行为进行描述,这就是
UICollectionViewLayout
。 - 而我们主要讲UICollectionViewLayout,因为这不仅是collectionView和tableView的最重要求的区别,也是整个UICollectionView的精髓所在。
- 如果对UICollectionView的基本构成要素和使用方法还不清楚的话,可以查看:UICollectionView详解中进行一些了解。
-
UICollectionViewLayoutAttributes类的介绍
1 | @property (nonatomic) CGRect frame |
可以看到,UICollectionViewLayoutAttributes的实例中包含了诸如边框,中心点,大小,形状,透明度,层次关系和是否隐藏等信息。
1.一个cell对应一个UICollectionViewLayoutAttributes对象
2.UICollectionViewLayoutAttributes对象决定了cell的摆设位置(frame)
自定义的UICollectionViewLayout
- UICollectionViewLayout的功能为向UICollectionView提供布局信息,不仅包括cell的布局信息,也包括追加视图和装饰视图的布局信息。实现一个自定义layout的常规做法是继承UICollectionViewLayout类,然后重载下列方法:
1 | -(void)prepareLayout |
- 调用顺序
1 | 1)-(void)prepareLayout 设置layout的结构和初始需要的参数等。 |
LineLayout:流水布局实例http://www.jianshu.com/p/a16ffb4bbcc2
流水布局
圆形布局CircleLayout http://www.jianshu.com/p/83e31a2f18d9
圆形布局
方行布局http://www.jianshu.com/p/58e06e1f2f6d
SquareLayout
瀑布流布局