自定义UICollectionView布局-入门
0.应用场景:
项目中经常会用到各种各样的cell,有时自定义cell已经无法满足产品的需求,我们可以选择复杂并且开发难度大的开发方式解决问题,当然也可以选择简单但是有技巧的解决方案,其中自定义UICollectionView布局就是一种很好的方式,这节就探讨如何使用自定义UICollectionView布局做出漂亮的界面。
1.继承方案
- 1> 继承UICollectionViewLayout
- 2> 继承UICollectionViewFlowLayout
2.可能需要重写的方法
1> prepareLayout
- 一般在这里设置一些初始化参数,执行初始化操作
- 必须要调用[super prepareLayout];
2> layoutAttributesForElementsInRect:
- 返回的数组中装着UICollectionViewLayoutAttributes对象
- 返回collectionView上面所有元素(比如cell)的布局属性:这个方法决定了cell怎么排布
- 每个cell都有自己对应的布局属性:UICollectionViewLayoutAttributes
3> shouldInvalidateLayoutForBoundsChange:
- 当uicollectionView的bounds发生改变时,是否要刷新布局
- 一旦重新刷新布局,就会重新按顺序调用1>、2>两个方法
4> targetContentOffsetForProposedContentOffset:withScrollingVelocity:
- 这个方法的返回值,决定了collectionView最终的偏移量(最终的停留位置)
- proposedContentOffset参数:collectionView本应该的偏移量
- velocity参数:collectionView的滚动速率
5> layoutAttributesForItemAtIndexPath:
- 如果继承了UICollectionViewLayout,最好实现这个方法
- 作用是:返回indexPath位置cell的布局属性
PS:后续会上传代码。