1.初步认识
UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。
简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:
1. 支持水平和垂直两种方向的布局
2. 通过layout配置方式进行布局
3. 类似于TableView中的cell特性外,CollectionView中的Item大小和位置可以自由定义
4. 通过layout布局回调的代理方法,可以动态的定制每个item的大小和collection的大体布局属性
5. 更加强大一点,完全自定义一套layout布局方案,可以实现意想不到的效果
2.创建UICollectionView
代码:
func initCollectionView() {
//0.初始化一定参数
let itemWidth: CGFloat = (UIScreen.mainScreen().bounds.size.width - 4 * 8) / 3
//1.创建一个layout布局类
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout.init()
//2.设置布局方向为垂直流布局 Vertical-垂直 Horizontal-横屏
layout.scrollDirection = .Vertical
layout.itemSize = CGSizeMake(itemWidth, 44)
//3.行与行之间的间距最小距离-列与列之间的间距最小距离
layout.minimumLineSpacing = 8
layout.minimumInteritemSpacing = 8
//3.1 设置分区的EdgeInset
layout.sectionInset = UIEdgeInsetsMake(8, 8, 8, 8)
//4.创建UICollectionView
let myCollectionView: UICollectionView = UICollectionView.init(frame: self.view.bounds, collectionViewLayout: layout)
myCollectionView.backgroundColor = UIColor.clearColor()
//5.继承协议
myCollectionView.delegate = self
myCollectionView.dataSource = self
//6.从一个class或者xib文件进行cell(item)的注册
myCollectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellID")
//myCollectionView.registerNib(UINib.init(nibName: "", bundle: nil), forCellWithReuseIdentifier: "")
//7.头视图或者尾视图view的注册
//UICollectionElementKindSectionHeader-头视图 UICollectionElementKindSectionFooter-尾视图
/* myCollectionView.registerClass(<#T##viewClass: AnyClass?##AnyClass?#>, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "")
myCollectionView.registerNib(UINib.init(nibName: "", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "") */
//8.设置是否允许选中 默认true
myCollectionView.allowsSelection = true
//9.设置是否允许多选 默认false
myCollectionView.allowsMultipleSelection = false
self.view.addSubview(myCollectionView)
}