天天看點

UICollectionView 簡單使用 代碼建立

最近使用了下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);

    }

}