UICollectionView基础使用

2018-01-06  本文已影响0人  小刘_假装是个程序员

UICollectionView介绍
UICollectionView类负责管理数据的有序集合以及自定义布局的模式来呈现数据,提供一些常用表格功能,此外还增加了单栏布局。也支持可以用于实现多列网格、平铺的布局、圆形的布局和更多的自定义布局,甚至你可以动态改变它的布局。
UICollectionView代码创建方式
UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounts collectionViewLayout:layout];
collectionView.delegate = self;
collectionView.dataSource = self;
[collectionView registerClass:[xxxCell class] forCellWithReuseIdentifier:@"cell"];
1.这个layout是什么呢?
UICollecitonViewLayout-是UICollecitonView特有的,负责其组成部分的cell,supplementary view和decoration view的组合。这三个view在后篇文章中会介绍。其能为三者设置各自的属性,包括:位置、大小、透明度、层级关系、形状等(存储在UICollectionViewLayoutAttributes,每个cell对应一个属于自己的UICollectionViewLayoutAttributes)。UICollectionView初始化都需要layout布局,可见其重要性。但是UICollectionViewLayout是一个抽象类,只定义了一些子类公有的属性和行为,不能直接使用。如果使用的话,则需要自己写布局。

UICollectionViewFlowLayout流式布局
UICollectionViewFlowLayout流式布局,苹果为我们设计非常灵活、通用的Layout。意思是UI控件会像流水一样,一行排满自动下一行排,这些布局都是苹果写好的。

UICollectionViewFlowLayout属性:
CGSize itemSize:定义所有的itemSize可以快捷给cell设置一样的大小(如果cell大小需求一样则可以用这个设置)。
CGFloat minimumLineSpacing:最小行间距
CGFloat minmumInteritemSpacing:最小cell之间的间距
UIEdgeInsets sectionInset:组内边距,设置的是UICollectionView整体的组内边距
CGSize headerReferenceSize:设置supplementary header View的大小
CGSize footerReferenceSize:设置supplementary header View的大小
UICollectionViewScrollDirection scrollDirection:设置UICollectionView的滚动放向
BOOL sectionHeadersPinToVisibleBounds:设置是否当元素超出屏幕之后固定头部试图位置,默认NO
BOOL sectionFootersPinToVisibleBounds:设置是否当元素超出屏幕之后固定尾部试图位置,默认NO
以上都是通过UICollectionViewFlowLayout来设置全局的布局,如果需要设置单独的每个item的属性则需要用UICollectionViewDelegateFlowLayout来设置。

UICollectionViewDelegateFlowLayout
//单独定制item的尺寸

//定义每个UICollectionView的margin(间距),对每一个section单独设置边界,即内部cell上下左右距离header和footer的边界(间距)

//单独定制每行之间的间距

//单独定制每行item之间的间距

//单独定制头部视图size

//单独定制脚注视图size

//设置section组数

//设置item个数

//配置cell

//自定义头部、脚注视图

UIScrollViewDelegate
UIScrollViewDelegate也和UITableViewDelegate类似功能,但有独特的代理方法

//设置是否允许选中

//设置是否允许取消选中

//选中

//取消选中

一定要注册cell不然会爆这样的错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier myCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
初步使用这些,就能简单的使用collectionView

转载: https://www.jianshu.com/p/1044873c20c9

上一篇 下一篇

猜你喜欢

热点阅读