UICollectionView簡單示例

首先建立一個Single View Application,而後在stroyboard已有的View Collection中拖入一個UICollectionView,大小本身調節。swift

而後按住option鍵並點擊項目中的ViewController.swift文件,使窗口分屏。而後按住control鍵鼠標點擊UICollectionView而後拖到ViewController中合適位置,命名爲collectionView。markdown

這裏寫圖片描述

ViewController實現UICollectionViewDelegate,UICollectionViewDataSource這兩個協議。
這裏寫圖片描述ide

在viewDidLoad方法中加入以下代碼。編碼

//設置代理與數據源
collectionView.delegate = self;
collectionView.dataSource = self;

接下來須要註冊UICollectionViewCell類,使用默認的Cell,其中須要一個重用UICollectionViewCell的標識,因此爲了方便起見在ViewController中添加一個變量,其中具體內容能夠自定義。spa

var identifier = "collectionView"

在viewDidLoad中繼續添加以下代碼用來註冊Cell代理

//註冊cell類
        collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: identifier)

設置collectionView的尺寸,我這裏設爲與屏幕等寬同高code

//設置UICollectionViewCell的尺寸

collectionView.bounds = UIScreen.mainScreen().bounds

實現了UICollectionViewDataSource協議,就須要實現協議中的非option方法,能夠直接去UICollectionViewDataSource裏面複製這兩個方法,能夠看到這兩個方法的原型。coffeescript

這裏寫圖片描述

如今在ViewController中實現這兩個方法圖片

這裏寫圖片描述

爲了方便起見,這裏分組的個數使用硬編碼,返回10ip

//該方法用來返回分組中cell的個數,因爲示例只有一個分組,因此只須要返回該分組中cell的個數便可
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 10
    }

實現func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize方法

//該方法返回對應的cell
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

//利用重用獲取cell
var cell = collectionView.dequeueReusableCellWithReuseIdentifier(identifier, forIndexPath: indexPath) as! UICollectionViewCell

//在獲取到的cell中添加一個自定義的UILabel
var label = UILabel(frame: CGRectMake(0, 0, 100, 100))
//用當前序號做爲label內容
label.text = String(indexPath.item)
//切記,要把空間添加到cell的contentview下!
cell.contentView.addSubview(label)

//設置cell的背景色
cell.backgroundColor = UIColor.blueColor()

return cell


}

最後,若是須要設置一下cell的尺寸,須要ViewController實現UICollectionViewDelegateFlowLayout協議。而且實現sizeForItemAtIndexPath方法。

//該方法返回的CGSize爲Cell的尺寸
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSizeMake(100, 100)
    }

最終效果:
這裏寫圖片描述

相關文章
相關標籤/搜索