自定义UICollectionViewLayout可以通过重写一下几种方法实现:
// 准备布局,布局配置数据,布局前会调用这个方法,注意要调用 [super prepareLayout];
- (void)prepareLayout;
// 返回collectionView的可以滚动的区域大小
- (CGSize)collectionViewContentSize;
// 返回所有的布局信息
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
// 返回indexPath对应的cell的布局信息
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath;
还有两个没有用到过,留着
// 返回indexPath处的header或footer的布局信息
-(UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath;
// 返回indexPath处的装饰的布局信息
-(UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath;
目前写了三种。效果如下:
Demo地址