Sample code
class ViewController: UIViewController {
var viewWidth: CGFloat {
return view.bounds.width
}
var viewHeight: CGFloat {
return view.bounds.height
}
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
layout.itemSize = CGSize(width: viewWidth*0.8, height: 200)
let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
collectionView.backgroundColor = .yellow
return collectionView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(collectionView)
collectionView.delegate = self
collectionView.dataSource = self
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
}
private func layout() {
collectionView.frame = view.bounds
}
}
extension ViewController: UICollectionViewDelegate {
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
cell.backgroundColor = .blue
return cell
}
}
// when you want access to the cells from your custom function
func doSomethinWithTheCell(index: Int) {
guard let cell = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return }
cell.backgroundColor = .yellow
}