UICollectionView(多在九宫格页面使用)

//它是官方提供的一种瀑布流效果

UICollectionViewFlowLayout*flowLayout = [[UICollectionViewFlowLayoutalloc]init];

//不同于tableView,它用item进行显示,所以需要先设置每个item有多大

flowLayout.itemSize=CGSizeMake(80,160);

//    //设置行间距

//    flowLayout.minimumLineSpacing = 2;

//    //设置列间距

//    flowLayout.minimumInteritemSpacing = 100;

//设置滚动方向,默认是垂直方向

//    flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

flowLayout.headerReferenceSize=CGSizeMake(0,300);

//    flowLayout.footerReferenceSize = CGSizeMake(0, 300);(如果写了就必须注册)

//创建一个collectionView

UICollectionView*collectionView = [[UICollectionViewalloc]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;

[self.viewaddSubview:collectionView];

[collectionViewrelease];

//通过注册的方式创建cell

//第一个参数:需要制定注册对象的类型

//第二个参数:重用标志

[collectionViewregisterClass:[myCellclass]forCellWithReuseIdentifier:@"reuse"];

//这侧一个头视图

[collectionViewregisterClass:[myCollectionReusableViewclass]forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"headerView"];

//第一个参数:需要注册的对象类型

//第二个参数:指定头视图还是尾视图,常量字符串在系统的UICollectionViewFlowlayout类的最上面

//第三个参数:重用标志

[selfcreatData];

两个必须实现的协议方法

- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section{

returnself.arr.count;

}

// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:

#warning使用注册的方式创建的cell,必须用自定义的cell,否则在里面会重复大量的创建视图,为了杜绝重复创建,必须使用自定义的的cell

- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{

#warning在collectionViewCell的创建的时候,提供了另外一种不同于tableviewCell的创建方式

myCell*cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"reuse"forIndexPath:indexPath];

//只要通过注册的方式创建的cell,在取值的时候就不需要在进行是否为空的判断

cell.contentView.backgroundColor= [UIColoryellowColor];

cell.titleLabel.text= [NSStringstringWithFormat:@"%ld",indexPath.row];

[cell.myImageViewsd_setImageWithURL:[NSURLURLWithString:self.arr[indexPath.row]]];

returncell;

}

******************************************************************************************

自定义的cell需要重写初始化方法

- (instancetype)initWithFrame:(CGRect)frame{

self= [superinitWithFrame:frame];

if(self) {

self.myImageView= [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,80,160)];

[self.contentViewaddSubview:self.myImageView];

[_myImageViewrelease];

self.titleLabel= [[UILabelalloc]initWithFrame:CGRectMake(0,100,80,30)];

[self.contentViewaddSubview:self.titleLabel];

[_titleLabelrelease];

}

returnself;

}

********************************************************************************

//头视图,尾视图

- (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView viewForSupplementaryElementOfKind:(NSString*)kind atIndexPath:(NSIndexPath*)indexPath{

if([kindisEqualToString:UICollectionElementKindSectionHeader]) {

myCollectionReusableView*view = [collectionViewdequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"headerView"forIndexPath:indexPath];

view.myLabel.text=@"11111";

returnview;

}else{

returnnil;

}

}

使用头视图和尾视图需要自定一个视图

使用UICollectionReusableView

- (instancetype)initWithFrame:(CGRect)frame{

self= [superinitWithFrame:frame];

if(self) {

//创建子视图

self.myLabel= [[UILabelalloc]init];

self.myLabel.backgroundColor= [UIColoryellowColor];

[selfaddSubview:self.myLabel];

[_myLabelrelease];

}

returnself;

}

你可能感兴趣的:(UICollectionView(多在九宫格页面使用))