테이블과 함께 많이 사용하는 collectionview를 설정한다.
tableview와 거의 동일하다.
하지만 UICollectionViewFlowLayout를 설정을 해줘야된다.
itemsize와 간격등을 설정해주면 된다.
페이징처리를 한것과 하지 않은것이다
아이템 UI는 테이블의 아이템과 비슷하다.
import UIKit class Collection1ViewController: UIViewController { var didSetupConstraints = false let cellName = "collectionViewCell1" var collection1Title: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 15) label.textColor = .black return label }() let collection1View: UICollectionView = { let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout.init()) collectionView.isPagingEnabled = true let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout.init() let size:CGSize = UIScreen.main.bounds.size layout.itemSize = CGSize(width: size.width, height: 200) layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 layout.scrollDirection = .horizontal collectionView.setCollectionViewLayout(layout, animated: false) return collectionView }() var collection2Title: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 15) label.textColor = .black return label }() let collection2View: UICollectionView = { let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout.init()) collectionView.isPagingEnabled = false let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout.init() let size:CGSize = UIScreen.main.bounds.size layout.itemSize = CGSize(width: size.width, height: 200) layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 layout.scrollDirection = .horizontal collectionView.setCollectionViewLayout(layout, animated: false) return collectionView }() let dummyList1: [TableView1Model] = [ TableView1Model(name: "test1", imageUrl: "https://lorempixel.com/100/101/", desc: ""), TableView1Model(name: "test2", imageUrl: "https://lorempixel.com/100/102/", desc: ""), TableView1Model(name: "test3", imageUrl: "https://lorempixel.com/100/103/", desc: ""), TableView1Model(name: "test4", imageUrl: "https://lorempixel.com/100/104/", desc: ""), ] let dummyList2: [TableView1Model] = [ TableView1Model(name: "test1", imageUrl: "https://lorempixel.com/101/101/", desc: ""), TableView1Model(name: "test2", imageUrl: "https://lorempixel.com/102/102/", desc: ""), TableView1Model(name: "test3", imageUrl: "https://lorempixel.com/103/103/", desc: ""), TableView1Model(name: "test4", imageUrl: "https://lorempixel.com/104/104/", desc: ""), ] override func viewDidLoad() { super.viewDidLoad() self.initUI() self.initCollectionView() self.setData() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func setData(){ self.collection1Title.text = "페이징 true" self.collection2Title.text = "페이징 false" } static func instance() -> Collection1ViewController { let vc = Collection1ViewController() return vc } } //collectionview extension Collection1ViewController: UICollectionViewDataSource, UICollectionViewDelegate { public func initCollectionView() { self.collection1View.dataSource = self self.collection1View.delegate = self self.collection1View.register(CollectionView1Cell.self, forCellWithReuseIdentifier: self.cellName) self.collection2View.dataSource = self self.collection2View.delegate = self self.collection2View.register(CollectionView1Cell.self, forCellWithReuseIdentifier: self.cellName) } public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { var count:Int = 0 if(collectionView == self.collection1View){ count = self.dummyList1.count } else if(collectionView == self.collection2View){ count = self.dummyList2.count } return count } public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { var cell:CollectionView1Cell? if(collectionView == self.collection1View){ cell = (collectionView.dequeueReusableCell(withReuseIdentifier: self.cellName, for:indexPath) as? CollectionView1Cell) cell?.bind(model: self.dummyList1[indexPath.row]) } else if(collectionView == self.collection2View){ cell = (collectionView.dequeueReusableCell(withReuseIdentifier: self.cellName, for:indexPath) as? CollectionView1Cell) cell?.bind(model: self.dummyList2[indexPath.row]) } return cell! } } //snapkit extension Collection1ViewController { func initUI() { self.view.backgroundColor = .white self.collection1View.backgroundColor = .white self.collection2View.backgroundColor = .white self.view.addSubview(self.collection1Title) self.view.addSubview(self.collection1View) self.view.addSubview(self.collection2Title) self.view.addSubview(self.collection2View) view.setNeedsUpdateConstraints() } override func updateViewConstraints() { if (!didSetupConstraints) { collection1Title.snp.makeConstraints { make in make.top.equalTo(topLayoutGuide.snp.bottom).offset(10) make.left.equalTo(10) make.right.equalTo(-10) make.height.equalTo(19) } collection1View.snp.makeConstraints { make in make.top.equalTo(collection1Title.snp.bottom) make.left.right.equalTo(0) make.height.equalTo(200) } collection2Title.snp.makeConstraints { make in make.top.equalTo(collection1View.snp.bottom).offset(10) make.left.equalTo(10) make.right.equalTo(-10) make.height.equalTo(19) } collection2View.snp.makeConstraints { make in make.top.equalTo(collection2Title.snp.bottom) make.left.right.equalTo(0) make.height.equalTo(200) } didSetupConstraints = true } super.updateViewConstraints() } }
결과화면
https://github.com/choiks14/SnapkitTest
'swift > snapkit' 카테고리의 다른 글
snapkit(14) (0) | 2017.07.02 |
---|---|
snapkit(13) (0) | 2017.07.02 |
snapkit을 한 3주일 공부한 느낌 (0) | 2017.06.25 |
snapkit(11) (0) | 2017.06.25 |
snapkit(10) (0) | 2017.06.25 |