iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
Mobile Development

IOS菜逼八連續30天挑戰系列 第 21

Day 21 UICollectionView的練習(1/2)

  • 分享至 

  • xImage
  •  

今天我們使用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")

今天就到這邊,明天見~


上一篇
Day 20 捨棄Storyboard並使用XIB來寫app
下一篇
Day 22 UICollectionView的練習 (2/2)
系列文
IOS菜逼八連續30天挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言