collection的简单使用
import UIKit
//与tableview极其相似,可以互相借鉴
class ViewController: UIViewController,UICollectionViewDelegate, UICollectionViewDataSource {
var collectionview : UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()//开启自动布局
layout.itemSize = CGSize(width: self.view.frame.width-20, height: 200)//应该先设置cell的大小
layout.scrollDirection = .Horizontal//设置滑动的方向,也是cell依次摆放的顺序(下滑横放,右滑竖放)
layout.minimumLineSpacing = 20//设置上下cell的最小间距(注意:设置的是最小间距,不能设定死的间距,会根据cell的大小摆放,下滑有效,左右滑动没有效果)
layout.minimumInteritemSpacing = 20//设置左右cell的最小间距,当cell充满整个屏幕宽度时,设置无效
layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)//设置section上下左右的间隙
//设置collection的位置大小
collectionview = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
collectionview.dataSource = self//使collection关联类的代理
collectionview.delegate = self
collectionview.pagingEnabled = true//使滑动翻页
collectionview.backgroundColor = UIColor.whiteColor()
// 注册cell和header/footer
collectionview.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")//注册cell
self.view.addSubview(collectionview)
collectionview.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "header")
collectionview.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "footer")
//开启定时器
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(didTime(_:)), userInfo: nil, repeats: true)
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath)
//设置单双cell的颜色
if indexPath.item % 2 == 0 {
cell.contentView.backgroundColor = UIColor.redColor()
}
else {
cell.contentView.backgroundColor = UIColor.blueColor()
}
return cell
}
//设置返回section的个数
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print("\(indexPath.row)\(indexPath.item)")
}
// func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
// return 4
// }//设置collection的个数
//创建一个计时器,使页面实现自动切换
func didTime(timer : NSTimer){
let offset = collectionview.contentOffset
//根据位置获取Cell(根据偏移量去找下一个cell,只要坐标在下一个cell视图中都可以)
let indexPath = collectionview.indexPathForItemAtPoint(CGPoint(x: offset.x + 10, y: 20))
//判断切换页面时下一个cell的下标
if indexPath!.item == 3{
collectionview.scrollToItemAtIndexPath(NSIndexPath(forItem: 0,inSection: 0), atScrollPosition: .Left, animated: false)
}
else{
collectionview.scrollToItemAtIndexPath(NSIndexPath(forItem: indexPath!.item+3,inSection: 0), atScrollPosition: .Left, animated: true)
}
}
//头尾的创建
// func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
// if kind == UICollectionElementKindSectionHeader{
// let header = collectionview.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "header", forIndexPath: indexPath)
// header.backgroundColor = UIColor.greenColor()
// return header
// }
// else{
//
// let footer = collectionview.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionFooter, withReuseIdentifier: "footer", forIndexPath: indexPath)
// footer.backgroundColor = UIColor.grayColor()
// return footer
//
// }
// }
//设置下一个cell的大小
// func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
// return CGSize(width: 10 * (indexPath.item + 1), height: 10 * (indexPath.item + 1))
// }
//设置头尾的大小,宽高和排列方式有关
// func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
// return CGSize(width: 10, height: 200)
// }
// func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
// return CGSize(width: 100, height: 200)
// }
}