最近使用了下UICollectionView 我一直都是純代碼 網上純代碼建立UIcollectionView的好少 額不說廢話了 直接貼代碼
//這個是建立限制的 包括設定行間距 單元格間距等
UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayoutalloc] init];
//這個是設定單元格大小的
flowLayout.itemSize=CGSizeMake(145,220);
//設定單元格間距
flowLayout.minimumInteritemSpacing=10;
//設定行間距
flowLayout.minimumLineSpacing=10;
//設定headerView的
[flowLayout setHeaderReferenceSize:CGSizeMake(DEF_SCREEN_WIDTH,35)];
//設定拖動方向的
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
//建立UIcollectionView
self.collectionView=[[UICollectionViewalloc]initWithFrame:CGRectMake(10, 74,DEF_SCREEN_WIDTH-20,DEF_SCREEN_HEIGHT-74-49)collectionViewLayout:flowLayout];
//注冊cell 的 不寫會崩……
[self.collectionViewregisterClass:[LayerCollectionCellclass] forCellWithReuseIdentifier:@"cell"];
//注冊 header 不需要header 可以不寫
[self.collectionViewregisterClass:[CollectionHeaderViewclass] forSupplementaryViewOfKind:@"UICollectionElementKindSectionHeader"withReuseIdentifier:@"headerView"];
self.collectionView.delegate=self;
self.collectionView.bounces=NO;
self.collectionView.backgroundColor=[UIColorclearColor];
self.collectionView.dataSource=self;
[self.viewaddSubview:self.collectionView];
//傳回每個section 的cell 數量
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 30;
}
//傳回section的數量
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
//建立cell
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellName=@"cell";
LayerCollectionCell *cell=[collectionViewdequeueReusableCellWithReuseIdentifier:cellNameforIndexPath:indexPath];
if (cell== nil) {
cell=[[LayerCollectionCellalloc]initWithFrame:CGRectMake(0,0, 145, 220)];
}
cell.backgroundColor=[UIColorwhiteColor];
[cellinitView];
cell.image.image=[UIImageimageNamed:@"layerHead"];
// [email protected]""
return cell;
}
//選中cell執行的方法
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%@",indexPath);
}
//建立header 的這個 方法裡也可以建立footer 要想建立header 必須建立一個類 繼承自 UICollectionReusableView 下面的CollectionHeaderView 類就是繼承自它 可以根據kind 設定是footer 還是header 加個判斷就可以 我這裡沒有加需要的童鞋自己加上去吧
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableView=nil;
CollectionHeaderView *view=[collectionViewdequeueReusableSupplementaryViewOfKind:@"UICollectionElementKindSectionHeader"withReuseIdentifier:@"headerView"forIndexPath:indexPath];
reusableView=view;
return reusableView;
}
//加一個傳回不同header 高度的方法
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
if (section == 0) {
return CGSizeMake(DEF_SCREEN_WIDTH, 105);
}else{
return CGSizeMake(DEF_SCREEN_WIDTH, 35);
}
}