与UITableView类似:

使用UITableView需要设置数据源和代理 UICollectionView的使用也需要设置数据源和代理
UITableView显示什么内容由数据源决定 想监听UITableView, 由代理决定 UICollectionView显示什么内容由数据源决定UICollectionView监听由代理决定
UITableView的内容都显示到cell上 UICollectionView的内容也显示到cell上
UITableView自定义cell需要添加到contentView上 UICollectionView自定义cell也需要添加到contentView上
UICollectionView和UITableView都是继承于UIScrollView

注意不同点:
UICollectionView如何显示内容完全由layout(布局对象)决定。所以在创建UICollectionView时必须传递一个layout对象, 否则UICollectionView不知道如何显示(也就是说init写入layout对象) 而layout对象是指的 UICollectionViewLayout对象,但是这个类是抽象类,所以我们一定需要实现。一般情况下,有已经写好的UICollectionViewLayout子类,我们直接拿过来用就行(比如说UICollectionViewFlowLayout(流水布局))。但是当我们需要自定义cell的显示样式的时候才需要自定义一个继承于UICollectionViewLayout类的类来自己实现。

综上所述:CollectionView的使用步骤。
1.必须要有布局,在初始化的时候就需要. (-init{})
2.必须注册cell(分为代码和Xib)
3.UICollectionView的cell是由布局决定
4.自定义cell
// 系统自带了流水布局,专门做九宫格
// UICollectionViewLayout基类,UICollectionViewFlowLayout是布局对象