首页 > 代码库 > UICollectionView 集合视图用法,自定义Cell

UICollectionView 集合视图用法,自定义Cell

在View里面

 //1.创建UICollectionViewFlowLayout

    UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init];

    //设置

    //1.1设置大小

    flowLayout.itemSize=CGSizeMake(90, 90);

    

    //1.2设置左右间距(注意如果给定间距,无法满足屏幕的宽度,设置无效)

    flowLayout.minimumInteritemSpacing=10;

    //1.3设置上下间距

    flowLayout.minimumLineSpacing=20;

    //1.4设置活动方向

    flowLayout.scrollDirection=UICollectionViewScrollDirectionVertical;

    //1.5设置Header

    flowLayout.headerReferenceSize=CGSizeMake(self.bounds.size.width,100);

    //1.6设置Footer

    flowLayout.footerReferenceSize=CGSizeMake(self.bounds.size.width, 100);

    

    //1.7设置内边距

    flowLayout.sectionInset=UIEdgeInsetsMake(10, 10, 10, 10);

    //2.创建集合视图

    self.coll=[[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:flowLayout];

    //背景颜色默认黑色

    self.coll.backgroundColor=[UIColor whiteColor];

    //3.添加到页面

    [self addSubview:self.coll];

 

***********************自定义CEll

//视图布局

-(void)addAllViews

{

    

    //视图控件都要加载在contentView

    self.c_imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8)];

    self.c_imageView.backgroundColor=[UIColor redColor];

    [self.contentView addSubview:self.c_imageView];

    

 

    self.c_label=[[UILabel alloc] init];

    self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);

    self.c_label.backgroundColor=[UIColor cyanColor];

    [self.contentView addSubview:self.c_label];

    

}

 

//

-(void)layoutSubviews

{

    [super layoutSubviews];

    self.c_imageView.frame=CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8);

     self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);

}

 

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

 

 

 

#import "RootViewController.h"

#import "RootView.h"

#import "Mycell.h"

//标识

#define kcollCell @"collCell"

#define kHeaderView @"headerView"

#define kFooterView @"footerView"

//4.遵循集合视图的代理,数据协议

@interface RootViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>

//FlowLayout不需要设置代理

@property(nonatomic,strong)RootView *rv;

@end

 

@implementation RootViewController

 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

        self.rv=[[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];

    }

    return self;

}

-(void)loadView

{

    self.view=self.rv;

}

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    //5.设置代理

    self.rv.coll.dataSource=self;

    self.rv.coll.delegate=self;

    // Do any additional setup after loading the view.

    //6.注册cell

   [self.rv.coll registerClass:[Mycell class] forCellWithReuseIdentifier:kcollCell];

    

    

}

 

 

 

//每个分组多少个

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

{

    return 102;

 

}

 

 

//返回cell

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

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

{

    //7.创建cell(改为自己的cell)

    Mycell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:kcollCell forIndexPath:indexPath];

    cell.c_imageView.image=[UIImage imageNamed:@"1347722492473[1].jpg"];

    cell.c_label.text=@"妞儿";

    //注册header

    

    [self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView];

    

    //注册footer

    [self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView];

    

    

    

    float red=arc4random()%256/255.0;

    float green=arc4random()%256/255.0;

    float blue=arc4random()%256/255.0;

 

    

    

    cell.backgroundColor=[UIColor colorWithRed:red green:green blue:blue alpha:0.5];

    

    return cell;

    

}

 

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

{

    

    NSLog(@"section: %d,row:%d",indexPath.section,indexPath.row);

}

 

 

 

//设置header和footer

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

{

    if (kind==UICollectionElementKindSectionHeader) {

        UICollectionReusableView *header=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView forIndexPath:indexPath];

        

        UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];

        label.backgroundColor=[UIColor blueColor];

        [header addSubview:label];

        label.text=@"哈哈";

        

        header.backgroundColor=[UIColor redColor];

        return header;

        

    }

    else

    {

        UICollectionReusableView *footer=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView forIndexPath:indexPath];

        

        

        footer.backgroundColor=[UIColor redColor];

        

        

        

        return footer;

    }

    

}

//

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

{

    

    if (indexPath.row%2) {

        return CGSizeMake(90, 90);

        

    }

    else

    {

        return CGSizeMake(60, 60);

    }

}

 

//内边距

-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

{

    if (section==0) {

        return  UIEdgeInsetsMake(10, 10, 10, 10);

 

    }

    else

    {

        return UIEdgeInsetsMake(90, 90, 90, 90);

    }

}

//上下间距

-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

{

    if(section==0)

    {

        return 10;

    }

    else

    {

        return 20;

    }

}

//左右间距

-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section

{

    return 10;

    

}

 

//

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

{

    return CGSizeMake(200,100 );

}

 

 

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

{

  return  CGSizeMake(200, 100);

    

}

 

 

 

 

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

 

 

 

 

 

 

UICollectionView 集合视图用法,自定义Cell