UICollectionView基础用法

#import "ViewController.h"
#define kScreenSize [UIScreen mainScreen].bounds.size

//遵守协议
@interface ViewController () <UICollectionViewDataSource,UICollectionViewDelegate>
{
    UICollectionView *_collectionView;
    
}

@property (nonatomic,strong) UICollectionView *collectionView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self creatCollectionView];
}
- (void)creatCollectionView {
    //1.先创建一个 UICollectionViewFlowLayout (是集合视图的核心)
    //通过UICollectionViewFlowLayout 来进行布局
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    //2.对layout 做一些基本的设置
    
    //设置cell 的大小(全局设置)(如果要单个对cell 大小进行设置需要遵守UICollectionViewDelegateFlowLayout协议实现方法)
    layout.itemSize = CGSizeMake(100, 100);
    
    //设置滚动的方向(水平和竖直)
    //UICollectionViewScrollDirectionHorizontal水平
    //UICollectionViewScrollDirectionVertical
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    //设置 cell 之间的最小竖直间隔 (上下cell间隔)
    layout.minimumLineSpacing = 30;
    //cell 之间的 最小水平间隔(水平方向的cell 间隔)
    layout.minimumInteritemSpacing = 10;
    
    //设置分区头视图的大小 (如果是竖直滚动那么设置height有效,width无效,水平滚动那么width 有效)
    //分区头间隔
    layout.headerReferenceSize = CGSizeMake(50, 50);
    //分区尾间隔(实际上就是尾视图的高)
    layout.footerReferenceSize = CGSizeMake(50, 50);
    
    //设置整个分区中所有cell(整体) 距离分区的上左下右的间距
    
    layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
    
    
    //实例化一个 集合视图对象 通过layout 布局
    self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 20, kScreenSize.width, kScreenSize.height-20) collectionViewLayout:layout];
    
    //设置代理和数据源对象
    self.collectionView.dataSource = self;
    self.collectionView.delegate = self;
    
    //cell 必须提前注册 复用标志要和下面队列获取cell 的时候一样
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CollectionViewCell"];
    
    //如果设置分区的头尾视图那么需要进行注册(注册之后就可以采用复用队列)
    //kind 表示 是头视图还是尾视图 第三个参数就是一个复用标识符 要和下面使用保持一致
    [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"Header"];
    //注册分区尾视图
    [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"Footer"];
    
    
    
    [self.view addSubview:self.collectionView];
    
    self.view.backgroundColor = [UIColor lightGrayColor];
}
#pragma mark UICollectionViewDataSource delegate
//有多少分区
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 2;
}
//每个分区有多少个cell
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 25;
}
//获取指定分区内的cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *cellId = @"CollectionViewCell";
    //从复用队列获取 cell (需要提前注册)
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
    //设置背景颜色
    cell.backgroundColor = [UIColor yellowColor];
    return cell;
}
#pragma mark - 获取分区头尾视图 
//创建 分区头尾视图调用
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
    //创建/获取头尾视图的时候也要用复用队列
    //判断kind 来区分头尾
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
        //头视图
        //(如果满足不了需要那么就定制)
        UICollectionReusableView *header = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"Header" forIndexPath:indexPath];
        header.backgroundColor = [UIColor greenColor];
        return header;
    }else {
        //尾视图
        //复用队列获取
        UICollectionReusableView *footer = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"Footer" forIndexPath:indexPath];
        footer.backgroundColor = [UIColor yellowColor];
        return footer;
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-12-15 20:12:25

UICollectionView基础用法的相关文章

sass基础用法

sass基础用法 SASS是什么 传统的CSS是一种单纯的描述性样式文件,然而SASS可以对CSS进行预编译处理. 在SASS源码中可以使用变量.函数.继承等动态语言的特性,并且可以编译成CSS文件. 安装与使用 安装 由于sass是ruby写的,所以想要使用sass就需要安装ruby环境.然后再使用gem安装sass. 输入下面的命令进行安装sass: gem install sass 可以使用sass -v命令查看sass的版本. 使用 新建一个后缀名为.scss源码文件,就可以编辑sass

游标基础用法

Create PROCEDURE P_InsertSubject@SubjectId intASDECLARE rs CURSOR LOCAL SCROLL FORselect studentid from student where StudentGradu = 1OPEN rsFETCH NEXT FROM rs INTO @tempStudentIDWHILE @@FETCH_STATUS = 0BEGINInsert SelSubject values (@SubjectId,@temp

Cocos数据篇[3.4](6) ——SQLite3数据库基础用法

[唠叨] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心应手. 本文介绍一下SQLite3数据库的基础用法:增删改查. PS:另外对于SQLite的可视

sed命令基础用法

    sed(Stream EDitor)简介 sed是一个流编辑器编辑器,本身是一个管道命令,主要以行为单位处理文本文件,可以将数据进行替换.删除.新增.选取等特定工作:sed并不会处理文本文件本身,而是每当处理一个文件时,按顺序逐行读取到模式空间(内存)中,而后在模式空间中完成编辑,把编辑的结果输出到屏幕上,接着处理下一行,反复操作,直到文件结尾. 模式空间:将读取的内容放在内存中的一块区域编辑,这些内存空间就称为模式空间 格式: sed [options]    'Address Com

2017.04 vue学习笔记---08表单控件绑定---基础用法

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> div{ margin-bottom: 30px; } </style> <script src="js/vue.js"></script> <

UIButton的最基础用法

UIButton的最基础用法 UIButton (1) 创建显示一个Button      //演示UI中按钮类UIButton使用 //需求: 想要在界面上显示一个按钮 //解决:   使用UIButton按钮类  //<1>创建按钮,一般需要指定按钮的风格 //系统样式的按钮:  UIButtonTypeSystem //如果创建带图片的: 一般选用UIButtonTypeCustom //圆角矩形: ios7不再使用UIButtonTypeRoundedRect //UIButtonTy

Vue组件基础用法

前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需,使用不同的组件来拼接页面.这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦.本文将详细介绍Vue组件基础用法 概述 组件是一个自定义元素或称为一个模块,包括所需的模板.逻辑和样式.在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能.通过Vue.js的声明式渲染后,

sed基础用法

在linux系统中,sed的文本处理无疑是一个非常强大的工具,用好sed可以使我们工作效率成倍提升,下面就小结一下sed的常用命令参数,只需关注常用的即可. 选项参数 首先来一发sed --help了解一下常用的参数 # sed --help Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... -n  忽略打印输出,一般是避免默认输出,只有我们处理的那一行文本会显示在屏幕上 -e  在命令行进行文本的处理

初识salt之saltstack配置应用以及基础用法

一.测试是否能管理client 使用模块cmd.run 可以查看到client的ip地址 [[email protected]_server ~]# salt '*' cmd.run 'ip a' salt_client1:     1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00