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) 移动动作布局