第二章:
两种布局样式的切换 线性布局--环形布局
继承UICollectionViewLayout的瀑布流
第一章中我们已经实现了滚动的布局,这里我们再加一个环形布局,实现两种布局的切换.
效果如下图所示:
1.首先我们要创建一个继承UICollectionViewLayout的瀑布流
2.实现以下方法.
#import "WJCircleLayout.h"
@interface WJCircleLayout ()
//布局属性
@property(nonatomic,strong)NSMutableArray *attrsArray;
@end
@implementation WJCircleLayout
-(NSMutableArray *)attrsArray
{
if (!_attrsArray) {
_attrsArray = [NSMutableArray array];
}
return _attrsArray;
}
-(void)prepareLayout
{
[super prepareLayout];
//刷新布局之前,把以前的布局清掉
[self.attrsArray removeAllObjects];
//cell的总个数
NSInteger count = [self.collectionView numberOfItemsInSection:0];
for (int i = 0; i < count; i++) {
//创建LayoutAttributes
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
UICollectionViewLayoutAttributes *attrs = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
attrs.size = CGSizeMake(50, 50);
attrs.center = CGPointMake(arc4random_uniform(300), arc4random_uniform(300));
//添加LayoutAttributes
[_attrsArray addObject:attrs];
}
}
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{