UICollectionView学习笔记
UICollectionView
学习UICollectionView
UICollectionView的组成
- Cell – 用于展示内容,尺寸和内容可以各不相同。
- Supplementary Views – 追加视图,类似于UITableView中每个Section的Header或Footer
- Decoration View – 装饰视图,跟数据无关,为Cell和Supplementary Views添加辅助视图。
所有的UICollectionView都有该三个部件组成
UICollectionView的实现
dataSource – 为View提供数据源,给View提供需要显示的数据
方法:
1). numberOfSectionsInCollectionView: – 获取section数量
2). collectionView:numberOfItemsInSection: – 获取某个section中item的数量
3). collectionView:cellForItemAtIndexPath: – 对于某个位置的cell是怎样的
4). collectionView:viewForSupplementaryElementOfKind:atIndexPath: – 对于某个位置的section显示怎样的Supplementary View
delegate – 负责实现与用户交互的相应,为样式实现一些细节
交互举例:
1).cell高亮
2).cell选中时的状态
3).长按后的菜单显示
监听cell点击:(当用户点击cell时触发的delegate询问)
<点击事件发生>
1).-collectionView:shouldHighlightItemAtIndexPath: – 是否应该高亮?
2).-collectionView:didHighlightItemAtIndexPath: – 确认显示高亮(如果1返回YES则执行,否则不执行)
<点击事件结束(手指抬起)>
3).-collectionView:shouldSelectItemAtIndexPath: – 是否应该选中被点击的cell(如果1返回NO这里不再询问询问是否选中)
4).-collectionView:didSelectItemAtIndexPath: – 确认选中被点击的cell(如果3中返回选中,调用选中)
5).-collectionView:didUnhighlightItemAtIndexPath: – 确认取消高亮(如果1返回YES,那么会调用取消高亮)UICollectionViewLayout – 为CollectionView定义一些独特的布局
UICollectionView子视图的复用
UICollectionView中所有视图都来自一个可复用的基类 –> UICollectionReusableView, 在UICollectionView中,对于cell,Supplementary View和Decoration View都是需要复用的。
UICollectionVIewCell的组成
相比于UITableViewCell,UICollectionViewCell不存在style,没有titleLabel和内置的imageView属性
1.cell – 在这里是UICollectionReusableView
2.backgroundvView – cell的背景视图,可以设置背景图片
3.selectedBackgroundView – cell被选中时的背景视图
4.contentView – 内容视图,自定义cell时将内容放在这个View上
布局 – UICollectionViewLayout
UICollectionViewLayout是UICollectionView特有的,可以将每个cell, Supplementary View和Decoration View进行组合,为它们设置各自的属性(位置,大小,透明度,层级关系,形状等)。它可以决定UICollectionView如何显示在界面上。
1.流水布局(线性布局) – UICollectionViewFlowLayout
属性:
1).CGSize itemSize – 定义每一个item的size,可以快捷地给cell设置大小
2).CGFloat minimumLineSpacing – 最小行间距
3).CGFloat minimumInteritemSpacing – 最小cell之间的距离
4).UIEdgeInsets sectionInset – 设置UIcollectionView整体的组内边距
5).CGSize headerReferenceSize – 设置supplementary header View的大小
6).CGSize footerReferenceSize – 设置supplementary footer View的大小
7).UICollectionViewScrollDirection scrollDirection – 设置UICollectionView的滚动方向
2.UICollectionViewAttributes布局属性
属性:
1).CGRect frame – 布局视图的frame
2).CGPoint center – 视图中心点
3).CGSize size – 视图尺寸
4).CGAffineTransform transform – 转场属性
5).CGFloat alpha – 透明度
6).NSInteger zIndex – 层级(数字越大,层级越高)
7).registerClass:forDecorationViewOfKind – 注册Decoration View
3.UICollectionViewLayout自定义布局
一些处理布局的方法
1).@interface UICollectionViewLayout (UISubclassingHooks) 布局UICollectiojnView的子视图
2).@interface UICollectionViewLayout (UIUpdateSupportHooks) 布局删除插入动作
3).@interface UICollectionViewLayout (UIReorderingSupportHooks) 移动动作布局