• 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.

    }

     

     

     

     

     

     

     

  • 相关阅读:
    C# 使用EWS 读取 Exchange 未读邮件并设置为已读
    .NET 操作 Exchange示例
    Elsa-Core 工作流 使用代码启动审批流或触发审批任务
    Elsa-Core-workflow 从代码启动指定工作流
    .NET CORE 开源工作流 elsa-core 基础使用示例
    文档翻译经验分享(Markdown)
    Orchard Core 开发示例教程
    VMware 与 Hyper-v 并存, 可同时运行 非启动项
    SmtpException: Failure sending mail. ---> System.InvalidOperationException: Asynchronous operations are not allowed in this context.
    Linux (Deppin ,Ubuntu )开发环境配置,VUE & dotnetcore 解决 yarn 找不到问题
  • 原文地址:https://www.cnblogs.com/haiying/p/4119908.html
Copyright © 2020-2023  润新知