iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
1
Mobile Development

iOS App初心者的30天試鍊系列 第 24

Day24:利用Flow Layout 的Collection view 製作照片牆

  • 分享至 

  • xImage
  •  

在昨天我們談完Day23-多頁面App和資料傳遞後,今天我們來談談如何運用Flow Layout

的Collection view製作照片牆

實做步驟 :

1.首先在MainStoryBoard按 + , 加入 collection view controller , 並且設定collection view

https://ithelp.ithome.com.tw/upload/images/20191001/20112182ZaDAyRhH9x.png

預設的layout為flow layout,Scroll Direction Vertical 代表它是上下捲動的 collection view。

https://ithelp.ithome.com.tw/upload/images/20191001/20112182yBr6y40BJk.png

2.在cell 裡加入 image view , 將 image view 的 Content Mode 設為 Aspect Fill

https://ithelp.ithome.com.tw/upload/images/20191001/20112182TyRXCYMmpt.png

https://ithelp.ithome.com.tw/upload/images/20191001/201121827tS2gMbA3B.png

3.設定 cell 之間的間距(Min Spacing For Cells / Min Spacing For Lines)

https://ithelp.ithome.com.tw/upload/images/20191001/20112182DTSGYbtASN.png

4.產生自訂的 collection view controller & collection view cell 類別

https://ithelp.ithome.com.tw/upload/images/20191002/2011218275aC3paKln.png

5.將 collection view controller & collection view cell 的類別設為自訂類別

https://ithelp.ithome.com.tw/upload/images/20191002/20112182kv16Ofhoud.png

6.設定 collection view 的 data source &遵從 protocol UICollectionViewDataSource

https://ithelp.ithome.com.tw/upload/images/20191002/20112182WsD58Oj1CW.png

7.設定 cell 的 Reuse Identifier

https://ithelp.ithome.com.tw/upload/images/20191002/20112182M0Tc2l1HKF.png

8.連結 cell 上圖片的 outlet imageView , Assets.xcassets加圖片

https://ithelp.ithome.com.tw/upload/images/20191002/20112182knmdrX1c7Z.png

class FirstCollectionViewCell: UICollectionViewCell {
 @IBOutlet weak var imageView: UIImageView!
}

9.設定 section & item 的數量

override func numberOfSections(in collectionView: UICollectionView) -> Int {
   return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
   return 30
}

10.設定 cell 的內容

 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "\(FirstCollectionViewCell.self)", for: indexPath) as! FirstCollectionViewCell
   cell.imageView.image = UIImage(named: "pic\(indexPath.row)")
   return cell
}

11.設定 cell 的大小

override func viewDidLoad() {
   super.viewDidLoad()
   let width = (collectionView.bounds.width - 1 * 2) / 3
   let flowLayout = collectionViewLayout as? UICollectionViewFlowLayout
   flowLayout?.itemSize = CGSize(width: width, height: width)
   flowLayout?.estimatedItemSize = .zero
}

12.按Play,執行iPhone 11 Pro Max模擬器,即可看到照片牆結果

弄了3小時總算看到/images/emoticon/emoticon02.gif

https://ithelp.ithome.com.tw/upload/images/20191002/20112182ds05hohQMF.png


上一篇
Day23:熟練多頁面 App 和資料傳遞的技巧之心理測驗或問卷
下一篇
Day25:今天來談串接Google Custom Search API,解析 JSON 資料
系列文
iOS App初心者的30天試鍊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言