它是苹果提供的一种瀑布流效果
它与tableView相似,但是UICollectionView中我们设计的是他的Item,它用item进行显示, 它可以等于cell的大小,但是cell不能够等于他的大小,
UICollectionViewFlowLayout *flowLayout = [UICollectionViewFlowLayout alloc]init];
//设计item大小
flowLayout.itemSize = CGSizeMake(200,160);
//设置行间距
flowLayout.minimumLineSpacing = 2;
//设置列间距
flowLayout.minmumInteritrmSpacing = 2;
//设置滚动方式,默认是垂直方向
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
//创建一个collectionView
UICollectionView *collectionView = [UICollectionView alloc]initWithFrame:CGRectMake:(0,0,self.view.frame.size.width,self.view.frame.size.height) collectionViewLayout:flowLayout];
//签订两个和tableView相似的协议,dataSource 和 delegate;
collectionView.delegate = self;
collectionView.dataSource = self;
collectionView.backGroundColor = [UIColor yellowColor];
[sefl.view addSubview:collectionView];
[collectionView release];
他也需要设定cell 写一个继承于UICollectionViewCell的myCell
给设定一条属性uilabel
//进行初始化
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self){
self.myLabel= [[UILabel alloc]initWithFrame:CGRectMake(0, self.contentView.frame.size.height - 50, self.contentView.frame.size.width, 50)];
[self.contentView addSubview:self.myLabel];
}
return self
}
UICollectionView需要通过注册的方式创建cell
//第一个参数:需要指定注册对象的类型
//第二个参数:重用标志
[collectionView registerClass:[myCell class ] forCellWithReuseIdentifier:@"reuse"];
和tableView一样 写两个必须实现的方法
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 9;//九宫格
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
// 在collectionCell的创建时候,提供了另一种不同于tableView的cell创建方法
MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"reuse" forIndexPath:indexPath];
//只要通过注册的方式创建的cell,在取值的时候就不需要再进行是否为空的判断
cell.contentView.backgroundColor = [UIColor cyanColor];
cell.titleLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];
return cell;
}