整体预览

高等级的包含和管理(Top-level containment and management)

UICollectionView 
UICollectionViewController

UICollectionView对象为collection view的内容定义了显示的区域。该类是 UIScrollView的子类,能够拥有大量的滚动区域,同时该类能够更具布局对象的布局信息,非常方便的显示数据。

UICollectionViewController对象提供视图控制器等级的管理支持,根据需求可以选择是否使用。

内容管理(Content management)

UICollectionViewDataSource 
UICollectionViewDelegate

数据源对象( data source object)是与collection view相关联的最重要对象,并且我们必须提供。该对象管理着collection view的内容并且创建视图显示内容。为了实现数据源对象,我们必须创建一个对象遵守UICollectionViewDataSource协议。

UICollectionView的代理对象能够让我们拦截来自collection view有趣的信息并且自定义view的行为。例如:我们使用代理对象来跟踪在collection view中选中和高亮的item对象,不像数据源对象,代理对象是可选的。对于跟多的信息,可以看Designing Your Data Source and Delegate.

显示内容(Presentation)

UICollectionReusableView 
UICollectionViewCell

所有显示在UICollectionView中的views都必须是UICollectionReusableView类的实例。通过使用UICollectionView该类支持循环机制。重复利用视图将提高整体的性能,特别是滚动的流畅。

UICollectionViewCell 对象是具体类型的重用视图,用于展示我们的数据。

布局(Layout)

UICollectionViewLayout 
UICollectionViewLayoutAttributes 
UICollectionViewUpdateItem

UICollectionViewLayout和子类作为布局对象主要负责定义位置、大小、cell的可视属性,以及collection view中重用的视图。

在布局过程中,一个布局对象(layout objects)将创建布局属性对象(layout attribute objects),该属性对象是UICollectionViewLayoutAttributes类的实例,它将告诉collection view在哪里以及怎样显示cells和重用视图。

无论什么时候数据item在collection view中进行插入 (inserted)、删除(deleted)、移动(move),布局对象接受UICollectionViewUpdateItem类的实例,我们从未使用该类自己创建实例。对于更多有关布局对象信息,可以看 The Layout Object Controls the Visual Presentation.

流动布局(Flow layout)

UICollectionViewFlowLayout 
UICollectionViewDelegateFlowLayout

UICollectionViewFlowLayout类是具体的布局对象,能够用于实现网格或者其它基于线性的布局。我们能够直接使用该类,或者设置flow代理,UICollectionViewDelegateFlowLayout协议中提供了大量的方法来方便我们自定义布局信息。

下图显示了核心对象与collection view之间的关系。collection view从数据源(data source )获取cells显示的相关信息。数据源(data source)和代理(delegate)对象需要APP提供自定义对象并用于管理内容,包括选中和高亮的cells。布局对象(layout object)主要负责确定cell的位置,并且通过提供一个或者多个布局属性对象发送相关信息给collection view,collection view将布局信息与cell合并创建最终的可视界面。

Figure 1-1 Merging content and layout to create the final presentation

什么是UICollectionView?

UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView. 
标准的UICollectionView包含三个部分,它们都是UIView的子类:

Cells 用于展示内容的主体,对于不同的cell可以指定不同尺寸和不同的内容. 
Supplementary Views 追加视图可以理解为每个Section的Header或者Footer,用来标记每个section的view. 
Decoration Views 装饰视图 这是每个section的背景.

与UITableView的对比:

UITableView是iOS开发中的非常重要的一个类,对这个类应该是非常熟悉了。实现一个UICollectionView和实现一个UITableView基本没有什么大区别,它们都同样是datasource和delegate设计模式的:datasource为view提供数据源,告诉view要显示些什么东西以及如何显示它们,delegate提供一些样式的小细节以及用户交互的相应。

UICollectionViewDataSource中:

section的数量 -numberOfSectionsInCollection: 
某个section里有多少个item -collectionView:numberOfItemsInSection: 
对于某个位置应该显示什么样的cell -collectionView:cellForItemAtIndexPath: 
实现以上三个委托方法,基本上就可以保证CollectionView工作正常了。

https://blog.csdn.net/longshihua/article/details/49617315

UICollectionView(一)基本概念相关推荐

  1. UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别...

    为什么80%的码农都做不了架构师?>>>    前序 最近在一家公司实习,学习一些ios的知识.因为以前没有使用过UICollectionView,所以带我的导师让我仿照公司APP中 ...

  2. iOS6新特征:UICollectionView介绍

      1.1. Collection View 全家福: UICollectionView, UITableView, NSCollectionView n   不直接等效于NSCollectionVi ...

  3. Swift:用UICollectionView整一个瀑布流

    本文的例子和Swift版本是基于Xcode7.2的.以后也许不知道什么时候会更新. 我们要干点啥 用新浪微博的Open API做后端来实现我们要提到的功能.把新浪微博的内容,图片和文字展示在colle ...

  4. 控制器之间跳转实现转场动画,动画控制器概念

    在iOS7以前,开发者如果希望定制导航控制器推入推出视图时的转场动画,一般都只能通过子类化UINavigationController或者自己编写动画代码去覆盖相应的方法,现在iOS7为开发者带来了福 ...

  5. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

  6. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  7. 数据结构(01)— 算法复杂度概念及常见的复杂度计算

    1. 大 O 表示法 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度.大 O 表示法指出了最糟情况下的运行时间.大 O 表示法在讨论运行时间时, ...

  8. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能

    1. OpenCV 概念 图像处理( Image Processing )是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理. 图像处理技术一般包括图像压缩, 增强和复原, 匹配.描述和 ...

  9. 用男女朋友关系解释计算机常用概念

    运维方面 很多同学对热备,冷备,云备了解不深,我科普一下 IT 行业各种备份术语.以后别闹笑话了. 假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人.你随时可以 ...

最新文章

  1. 如何用for循环出数据库的数据
  2. linux ssh无需密码,linux下 ssh 实现无需密码的远程登陆
  3. 安装完SqlServer2008,wamp服务器无法启动的问题
  4. Python+selenium搭建自动化框架
  5. 以太坊 Solidity 函数返回(returns)多个值 和 接收方式
  6. Java eclipse: errors exist in required project(s)
  7. 元宇宙需要“基建狂魔”
  8. 自制的一个小地图生成器
  9. 【第一篇】Qt学习与使用---将数字转换成中文大写的形式
  10. 每日工作记录——W5500网口ping中出现的问题
  11. axios请求文件流下载文件
  12. 程序员到底要不要读研,过来人给你几点建议!
  13. .NET 结构体 Struck、类
  14. mysql 横向分表_mysql横向和纵向的数据库分表
  15. USB to TTL python 本地测试串口通信
  16. H5调起摄像头拍照上传
  17. 基于Qt5 的串口助手开发
  18. E站账号cookie分享_产品经理必懂知识点—cookie和session
  19. linux用命令下载图片,Linux命令行中采集指定页面的图片地址及图片下载
  20. steam网络游戏加速技术,针对任何联网进程或者游戏代理加速都行。

热门文章

  1. go python php 压力测试_pyLot 基于python的压力测试工具
  2. linux 调用redis cli,使用redis-cli定时执行指定命令
  3. CMU贺斌教授团队提出:冥想可以增强对脑机接口的控制
  4. 女性走夜路不安全?英国奇葩新招:无人机护航,关键时刻用光吓退张三
  5. 参会指南 |「MEET 2021智能未来大会」明天启幕!
  6. 一块CPU就能运行超逼真水流特效!胡渊鸣的算法被这样实现,本人看了都说好...
  7. 李飞飞、邓中翰当选美国国家工程院院士
  8. 中文预训练模型ZEN开源,效果领域内最佳,创新工场港科大出品
  9. 波士顿动力双足机器人Atlas放出逆天体操表演,网友:比我还强
  10. 阿里AI再揽2员大将:挖角高通、360,年薪百万美元