UICollectionView 具体解说学习
UICollectionView 和UITableView非常像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己的Datasource和delegate。以下具体说下像这种方式的效果.
首先来看看UICollectionView 的DataSource。
@protocol UICollectionViewDataSource <NSObject>
@required- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;@optional- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;// The view that is returned must be retrieved from a call to -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;@end
能够看到和UITableView 一样,它有两个必须实现的方法:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section//有多少个item-dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;//每一个长什么样,它要使用dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:来生成
其他的两个是分别有几部分cell,和UITableView中的numberOfSection一样.默认是1个,viewForSupplementaryElementOfKind这个则是用来做出表头和表尾的。
UICollectionViewDelegate 它的代理方法全是可选的,常常且主要用到的就是:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
这是表明选中后要做什么.
以下来实现一下:
首先在自定义的头文件里加入一个UIColletionView的属性(比直接用实例变量好,具体请看Effective objective-c的学习笔记1)配置各种属性,然后加到self.view上。
@property (nonatomic, strong) ZJCollectionViewFlowOut *collectionViewFlowLayout;
self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:self.collectionViewFlowLayout];_collectionView.backgroundColor = [UIColor clearColor];_collectionView.dataSource = self;_collectionView.delegate = self;[self.view addSubview:_collectionView];
再设置viewController 遵守delegate和dataSource;
@interface ZJCollectionViewController ()<UICollectionViewDataSource, UICollectionViewDelegate>
@end
这样再xcode 上新的一行输入- collection就会出现非常多collectionView的提示了.
实现:collectionView:cellForItemAtIndexPath:
由于这种方法要用到前面说的那个注冊的cell所以先建一个UICollectionViewCell,顺便搞定那个FlowLayout.
Cell的内容当然能够自定义的了.
在viewDidLoad中创建CollectionView的以下加上:
[_collectionView registerClass:[ZJCollectionViewCell class] forCellWithReuseIdentifier:kCellReuseIdentifier];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{ZJCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCellReuseIdentifier forIndexPath:indexPath];NSString *image = @"201502192144014806.jpg";cell.userImageView.image = [UIImage imageNamed:image];return cell;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{return self.pictureArray.count;
}
在viewDidLoad中collectionView创建之前要创建那个布局的
collectionViewFlowLayout 对象.
self.collectionViewFlowLayout = [[ZJCollectionViewFlowOut alloc]init];
当中在collectionViewFlowLayout里面是这种:
- (id)init
{if (self = [super init]) {self.minimumInteritemSpacing = 1.0;//item 之间的行的距离self.minimumLineSpacing = 0.0;//item 之间竖的距离self.itemSize = (CGSize){[UIScreen mainScreen].bounds.size.width/3,[UIScreen mainScreen].bounds.size.width/3};// self.sectionInset = UIEdgeInsetsMake(4, 4, 4, 4); 这个是设置一个section的距离上下上左下右间距。
} return self; }
得出的结果例如以下图:
这是一个简单的UICollectionView的展示,时间不多。有空再具体点
转载于:https://www.cnblogs.com/claireyuancy/p/7141333.html
UICollectionView 具体解说学习相关推荐
- 【英语学习工具】解说 LeHoCat 提供免费的 视频集制作工具 使用方法, 看视频学英语的制作工具, 制作英语教学课件的工具, 帮助自学英语(详细图文解说)
这一次更新版本提供下载的文件 需要制作视频集要使用 视频集制作 的用户, 要下载这个文件 LeHoCat_2023xxxx_All.zip , 容量大小约2200MB, 包含了所需要的所有单词音频MP ...
- 【英语学习工具】LeHoCat 提供免费的 视频集播放工具 使用方法, 看视频学英语的工具, 帮助自学英语(详细图文解说)
学习英语常常要硬背教材, 要背得起来真的很难, 看看能不能找有兴趣的内容一面消遣一面学习, 比如说一部英文电影视频至少有1000句话, 要是能把整部电影视频的英语学得差不多了会不会有所进步, LeHo ...
- 【英语学习工具】学习英语硬背硬记太难了, 在这里解说 LeHoCat 提供免费的 视频集 工具的使用方法, 看视频学英语的工具, 制作英语教学课件的工具, 帮助自学英语(详细图文)
学习英语常常要硬背教材, 要背得起来真的很难, 看看能不能找有兴趣的内容一面消遣一面学习, 比如说一部英文电影视频至少有1000句话, 要是能把整部电影视频的英语学得差不多了会不会有所进步, LeHo ...
- 蓝懿IOS学习UICollectionView实战轮播图
今天刘国斌老师讲了关于JSON数据源的获取与利用,通过微博的实战项目进行练习,获取的数据都是网络上请求的真实数据,这种方式学起来很轻松,很容易理解. 刘国斌老师把今天做的练习题UICollection ...
- 深度学习卷积神经网络CNN之 VGGNet模型主vgg16和vgg19网络模型详解说明(理论篇)
1.VGG背景 2. VGGNet模型结构 3. 特点(创新.优缺点及新知识点) 一.VGG背景 VGGNet是2014年ILSVRC(ImageNet Large Scale Visual R ...
- 0基础学习VR全景平台篇第29章:场景功能-音乐解说
本期为大家带来蛙色VR平台,场景管理模块-音乐功能! 功能位置示意 一.本功能将用在哪里? 优秀VR全景作品不仅注重视觉的体验,接入契合场景的背景音乐与解说: 可将音乐与解说进行全局播放或进行分场景播 ...
- fx5800p编程教程_CASIOfx5800P基本功能及编程学习解说.ppt
2006年10月上市fx-4850P升级机型;一.特点与fx-4000系列工程机比较:① 内存容量--28500字节闪存不需备用电池保存机内程序与数据取出电池也不会丢失内存的程序与数据;② 类结构化B ...
- 深度学习中的贝叶斯统计简介
贝叶斯用概率反映知识状态的确定性程度.数据集能够被直接观测到,因此不是随机的.另一方面,真实参数θ是未知或不确定的,因此可以表示成随机变量.在观察到数据前,我们将θ的已知知识表示成先验概率分布(pri ...
- iOS超全开源框架、项目和学习资料汇总(1)UI篇
上下拉刷新控件 **1. ** MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) ...
最新文章
- 使用KiWi Syslog Daemon构建日志服务器
- 2018批量打印开关_新品上市,震撼来袭!买UV平板打印机,一定看过这款后再定!...
- import java.util.calendar_Java.util.Calendar.setTimeInMillis()
- 虚拟主机的实现方式,真是简单啊!
- 什么是ip地址、子网掩码、网关和DNS?
- 同步工具类CyclicBarrier原理及使用
- QTWebkit中的webkit/qt/api文档
- java 发送短信例子_利用java实现的一个发送手机短信的小例子
- Grunt自动化工具相关
- Android 原生开发、H5、React-Native Flutter 使用利弊和场景技术分享
- LINUX编译mate-desktop/pluma-1.24.0文本编辑器
- 蓝桥杯安慰奶牛java_最小生成树——安慰奶牛(蓝桥杯试题集)
- 基于VHDL的vivado2017.4使用教程
- Halcon 第六章◆第6节:光学字符识别OCR
- 商品库存的扣除过程中如何防止超卖?
- IE浏览器被2345网址导航劫持
- pyqt5 失焦 监听无操作 定时器
- 弘辽科技:一件代发什么商品最容易赚钱?怎么做优化?
- JDK中的Hprof命令
- 多因子选股模型 —— 因子历史收益率(因子与股票收益率回归后的收益率)加权法
热门文章
- 通过超链接访问后台方法_超有用的公众号超链接,3分钟学会2种超链接方法,特别实用!...
- Eclipse中获取html jsp 标签的属性提示信息方法
- Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) A Dead Pixel
- 最短路径生成树计数+最短路径生成树
- 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
- 标准10进制公制度量系统中 倍率关系 大全
- 程序员发展应该尽早明白13个道理
- 访问 Neutron 外部网络 - 每天5分钟玩转 OpenStack(143)
- 贴几张最新最精彩的电影海报
- GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机