iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0

UITableView跟UICollectionView很像,也需要實做幾個delegate,今天來介紹UICollectionView

  • 管理有順序的數據,並且能自定義資料的佈局

  • UICollectionView 有些地方與 UITableView 類似,它的每個儲存格也稱為 cell ,委任對象實作的方法也差不多。

  • iPhone 內建的 照片 App 就是用 UICollectionView 為主要呈現方式。

  • 為了使用UICollectionView,我們需要創建Collection View。最簡單的方式就是從Library直接拖曳一個Collection View的component進storyboard

  • 或者可以使用程式碼去創建一個Collection View
  • 如果不是從storyboard建立的就需要在ViewDidLoad() method裡呼叫這個方法
func initCollection() {
   let layout = UICollectionViewFlowLayout()
   //設定寬高
   layout.itemSize = CGSize(width: 50, height: 50)
   let collection = UICollectionView.init(frame: self.view.frame, collectionViewLayout: layout)
   collection.dataSource = self
   collection.delegate = self
   collection.backgroundColor = colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1)
   collection.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
   self.view.addSubview(collection)
}
  • 在設定完之後要讓我們的class遵從兩個protocol,UICollectionViewDataSource and UICollectionViewDelegate

  • 需要實作method,我們要告訴collection view需要多少個section

func numberOfSections(in collectionView: UICollectionView) -> Int {
   return 1
}
  • 接著需要實作另一個method需要知道有幾個items,以及什麼資料要顯示在cell。
func collectionView(_ collection: UICollectionView, numberOfItemsInSection section: Int) -> Int {
   return 7
}
func collectionView(_ collection: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
   let cell = collection.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
   cell.layer.backgroundColor = colorLiteral(red: 0.4392156899, green: 0.01176470611, blue: 0.1921568662, alpha: 1)
   return cell
}

這是以上code實做出來的結果


上一篇
Swift-UITableView Cell
下一篇
Swift-Navigation Controller
系列文
Swift!從新手到微上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言