collection View学习笔记

本文对比了collectionView和tableView的共性和差异,重点介绍了collectionView的布局,包括预定义的流布局和自定义布局的实现,详细讲解了如何创建UICollectionViewLayoutAttributes对象和重写相关方法。此外,还探讨了增删子视图的处理。
摘要由CSDN通过智能技术生成

collection View的三个逻辑组成部分:数据、子视图、布局。


一、collectionView和tableView的比较

1. 和tableView的共同点:

(1)都继承scrollView
(2)都需要两个代理:delegate和dataSourceDelegate
(3)都按分区(section)和单元格(cell)对子视图进行管理
(4)都有重用机制,每次从重用池中取出一个cell都会执行对应类的layoutSubviews方法。执行这个方法的时候,已经更新了cell的大小,但不会更新cell的contentView的大小。不论对于cell还是cell的contentView,默认frame的大小和bounds的大小都是一样的。

2. 和tableView的不同点:

tableView collectionView
(1)初始化 tableView初始化的时候需要指定表格的style; collectionView初始化的时候需要指定一个布局类的对象。
(2)管理子视图布局 tableView按行来管理子视图,一行对应一个cell。布局只涉及行高; collectionView子视图可以不受行和列的约束自由分布,一个item对应一个cell。由布局类UICollectionViewLayout类来指定视图的位置。
(3)重用机制 tableView的重用机制是针对cell的,且不是强制的,即某种cell类型可以在未注册的情况下使用; collectionView的重用机制面向所有子视图,包括section、cell、装饰性的子视图,且是强制的,所有用到的cell类型和section类型都需要注册之后才可以使用。
(4)重用机制调用的初始化方法 在tableView的重用机制里,对于注册了的类,会在需要创建该类的对象的时候自动调用该类的initWithStyle:reuseIdentifier:方法; 在collectionView的重用机制里,对于注册了的类,会在需要该类的对象的时候自动调用该类的initWithFrame:方法。

二、collectionView的布局

由于已经学过tableView,类似的collectionView的协议方法都能明白。因此这里把重点放在item的布局上。
(1)collectionView何时需要布局:
collectionView加载的时候,在增删、移动子视图的时候会需要布局信息。
(2)collectionView如何指定布局样式
collectionView在初始化的时候就指定了collectionViewLayout对象。选择不同的布局方法,也就是给collectionView指定不同的col

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值