今天我們使用XIB來練習CollectionView,還不知道XIB怎麼使用的,可以看這邊:
連結
首先我們進到,MainVC裏面,拉一個CollectionView進去,然後用autolayout,四個點都設成0,如下圖
一般來說,我們的MainStoryboard裡面就可以設定cell裡面要放什麼東西,譬如Image,Label等等,但是因為我們是用XIB去當成我們的主畫面,所以我們必須用register的方式去自訂我們的cell,我們可以建立一個資料夾叫做Model,裡面放我們的struct結構跟MycollectionViewCell,之後在Model資料夾底下再建立一個資料夾叫MyCollectionViewCell,像這樣:
之後新增檔案,選Cocoa Touch Class
之後名稱取一個你喜歡的,這邊我是命名為MyCollectionViewCell,然後subclass選UICollectionViewCell,別忘了勾Also create XIB file喔~
好了之後我們把我們cell裡面要放的東西放進去(UIImage跟Label):
接下來去MyCollectionViewCell.swift裡面把IBOutlet拉好。
*這邊要留意下Cell整體的大小:
之後回到MainVC,改一下CollectionViewCell的大小
我是設定比我的XIB Cell 還要大個10,長寬都是
接下來我們在Model底下建立一個swift檔案,名稱隨意
代碼:
struct collectionViewCellData {
import UIKit
var image: UIImage?
var placeName: String?
init(image: UIImage,placeName: String) {
self.image = image
self.placeName = placeName
}
}
當然你要寫在MainVC那邊也可以,記得寫在class外面~我會寫在這邊是比較好把它做一個分類,萬一之後要改參數,就不用找來找去,找到眼花,然後記得要import UIKIt,不然你會找不到UIImage~
接下來我們要到MainVC裏面,把我們的cell註冊到我們的CollectionView裏面,那這個是要寫在view.didload裏面,也就是說當畫面載入時,cell也會著被註冊進去,這個方法也適用於你用XIB去做TableView。
在override func viewDidLoad()底下加入這段代碼:
let nibCell = UINib(nibName: "MyCollectionViewCell", bundle: nil)
MyCollectionView.register(nibCell, forCellWithReuseIdentifier: "Cell")
今天就到這邊,明天見~