collectionView头视图与组视图的创建

本文介绍了如何在UICollectionView中创建和自定义头视图与组视图。通过注册 nib 或类,设置大小,填充内容,并提供协议方法返回视图,实现了头视图展示图片以及组视图的创建。示例代码详细展示了实现过程。
摘要由CSDN通过智能技术生成

//1.头视图的创建

staticNSString *headerViewIdentifier =@"hederview";

-(void)addCollectionView

{

    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayoutalloc]init];

    layout.minimumLineSpacing=20;//设置每一行的间距

    layout.itemSize=CGSizeMake(100,100);  //设置每个单元格的大小

    layout.sectionInset=UIEdgeInsetsMake(0,0, 50, 0);

    layout.headerReferenceSize=CGSizeMake(self.view.frame.size.width,200); //设置collectionView头视图的大小

    

   UICollectionView *collectionView=[[UICollectionViewalloc]initWithFrame:self.view.boundscollectionViewLayout:layout];

    collectionView.frame=self.view.bounds;

    //注册cell单元格

   [collectionView registerNib:[UINibnibWithNibName:@"ConstomCell"bundle:nil]forCellWithReuseIdentifier:@"cell"];

    //注册头视图

    [collectionView registerClass:[UICollectionReusableViewclass] forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:headerViewIdentifier];

    

    collectionView.backgroundColor=[UIColorwhiteColor];

    collectionView.delegate=self;

    collectionView.dataSource=self;

    [self.viewaddSubview:collectionView];

}


#pragma mark  返回多少行

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

{

   

   return 13;

}

#pragma markk 返回的单元格

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

{

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

    

   return cell;

}


//  返回头视图

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

{

    //如果是头视图

    if ([kindisEqualToString:UICollectionElementKindSectionHeader]) {

         UICollectionReusableView *header=[collectionViewdequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:headerViewIdentifierforIndexPath:indexPath];

        //添加头视图的内容

        [selfaddContent];

        //头视图添加view

        [headeraddSubview:self.headerImage];

       return header;

    }

    //如果底部视图

//    if([kind isEqualToString:UICollectionElementKindSectionFooter]){

//        

//    }

    return nil;

}

/*

 *  补充头部内容

 */

-(void)addContent

{

   UIImageView *headerImage=[[UIImageViewalloc]init];

    headerImage.contentMode=UIViewContentModeScaleAspectFill;

    headerImage.clipsToBounds=YES;

    headerImage.frame=CGRectMake(0,0, self.view.frame.size.width,200);

    headerImage.image=[UIImageimageNamed:@"mei"];

   self.headerImage=headerImage;

}

详细demo地址  点击打开链接


//2.组视图的创建


//先创建

ReusableView类 继承于UICollectionReusableView

然后collectionView注册

 [selfregisterNib:[UINibnibWithNibName:@"ManagerReusableView"bundle:nil]forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"ManagerReusableView"];


//协议方法里面创建头视图

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

    

     

    ManagerReusableView *header = [collectionViewdequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"ManagerReusableView"forIndexPath:indexPath];

    

    return header;

    

}

//设置宽高

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section

{

       return CGSizeMake(kScreenWidth,30);

    

}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值