欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS的UICollectionView添加header

程序员文章站 2022-04-13 12:08:29
...

实现效果
iOS的UICollectionView添加header

一、创建UICollectionView

#import "HomeViewController.h"  
#import "ConstomCell.h"  

static NSString *headerViewIdentifier = @"hederview";  

@interface HomeViewController ()<UICollectionViewDataSource,UICollectionViewDelegateUICollectionViewDelegateFlowLayout>  

@property (nonatomic,strong) UIImageView *headerImage;  
@end  

@implementation HomeViewController  

- (void)viewDidLoad {  
    [super viewDidLoad];  
    //1.添加collectionview  
    [self addCollectionView];   
}  

-(void)addCollectionView  
{  
    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc]init];  
    //设置每一行的间距  
   layout.minimumLineSpacing=20;  
    //设置每个单元格的大小   layout.itemSize=CGSizeMake(100, 100);   
    layout.sectionInset=UIEdgeInsetsMake(0, 0, 50, 0);  
  //设置collectionView头视图的大小  layout.headerReferenceSize=CGSizeMake(self.view.frame.size.width, 250); 

    UICollectionView *collectionView=[[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];  
    collectionView.frame=self.view.bounds;   
   //注册cell单元格  
   [collectionView registerNib:[UINib nibWithNibName:@"ConstomCell" bundle:nil] forCellWithReuseIdentifier:@"cell"];  
    //注册头视图  
    [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerViewIdentifier];  
    collectionView.backgroundColor=[UIColor whiteColor];  
    collectionView.delegate=self;  
    collectionView.dataSource=self;  
    [self.view addSubview:collectionView];  
}  

二、代理方法

#pragma mark  返回多少行  
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section  
{  
    return 13;  
}  
#pragma markk 返回的单元格  
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath  
{  
    ConstomCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];  
    return cell;  
}  

//  返回头视图  
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath  
{  
    //如果是头视图  
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {  
         UICollectionReusableView *header=[collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:headerViewIdentifier forIndexPath:indexPath];  
        //添加头视图的内容  
        [self addContent];  
        //头视图添加view  
        [header addSubview:self.headerImage];  
        return header;  
    }  
    //如果底部视图  
//    if([kind isEqualToString:UICollectionElementKindSectionFooter]){  
//    }  
    return nil;  
}  

/* 
 *  补充头部内容 
 */  
-(void)addContent  
{  
    UIImageView *headerImage=[[UIImageView alloc]init];  
    headerImage.contentMode=UIViewContentModeScaleAspectFill;  
    headerImage.clipsToBounds=YES;  
    headerImage.frame=CGRectMake(0, 0, self.view.frame.size.width, 250);  
    headerImage.image=[UIImage imageNamed:@"mei"];  
    self.headerImage=headerImage;  
}  

@end