• UICollectionView


    #import "ViewController.h"

     

    @interfaceViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [superviewDidLoad];

       

        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayoutalloc] init];

        

        UICollectionView *collection = [[UICollectionViewalloc] initWithFrame:self.view.boundscollectionViewLayout:layout];//初始化,并设置布局方式

        collection.backgroundColor = [UIColor whiteColor];

        

        [collection registerClass:[UICollectionViewCellclass] forCellWithReuseIdentifier:@"cell"];//注册UICollectionViewCell,这是固定格式,也是必须要实现的

        

        [collection registerClass:[UICollectionReusableViewclass] forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"headerView"];//注册头/尾视图,视图类型必须为UICollectionReusableView或者其子类,kind设置为UICollectionElementKindSectionHeader或者UICollectionElementKindSectionFooter,最后设置标识

        

        collection.delegate = self;

        collection.dataSource = self;

        [self.view addSubview:collection];

        

    }

     

    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

        //设置组数,不写该方法默认是一组

        return 4;

    }

     

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

        return 9;

    }

     

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

        

        staticNSString *identifier = @"cell";//注意,此处的identifier要与注册cell时使用的标识保持一致

        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

        

        cell.backgroundColor = [UIColor grayColor];

        cell.layer.borderWidth = 0.5;

        cell.layer.borderColor = [UIColorwhiteColor].CGColor;

        return cell;

        

    }

     

    //设置头视图的尺寸,如果想要使用头视图,则必须实现该方法

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

        return CGSizeMake(300, 30);

    }

     

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

        //根据类型以及标识获取注册过的头视图,注意重用机制导致的bug

        UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"headerView"forIndexPath:indexPath];

        headerView.backgroundColor = [UIColor brownColor];

        

        for (UIView *view in headerView.subviews) {

            [view removeFromSuperview];

        }

        

        UILabel *label = [[UILabel alloc] initWithFrame:headerView.bounds];

        label.text = [NSString stringWithFormat:@"%zi组的头视图",indexPath.section];

        [headerView addSubview:label];

        label.textColor = [UIColor whiteColor];

        

        return headerView;

    }

     

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

        NSLog(@"%zi组,%zi",indexPath.section,indexPath.item);

        

    }

     

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

        //设置item尺寸

        returnCGSizeMake(self.view.frame.size.width/3.0, 100);

    }

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

        //设置组距离上向左右的间距

        returnUIEdgeInsetsMake(0,0,0,0);

    }

     

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

        //两个item的列间距

        return 0;

    }

     

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

        //如果一组中有多行item,设置行间距

        return 0;

    }

     

    - (void)didReceiveMemoryWarning {

        [superdidReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

     

    @end

     

  • 相关阅读:
    路径操作OS模块和Path类(全)一篇够用!
    数据可视化:绘图库-Matplotlib
    matplotlib中文显示的问题
    Microsoft Visual C++ 14.0 is required问题解决
    python习题——随机整数生成类
    python——时间模块
    怎么获取10个线程的结果再返回
    集群服务器定时任务,只运行一个定时器的设计
    分布式事务
    分布式数据库---分库分表
  • 原文地址:https://www.cnblogs.com/lcl15/p/5023242.html
Copyright © 2020-2023  润新知