Skip to content

Instantly share code, notes, and snippets.

@BrandonShega
Created October 19, 2016 14:31
Show Gist options
  • Save BrandonShega/6cca977f9903492126ad98b252a55c57 to your computer and use it in GitHub Desktop.
Save BrandonShega/6cca977f9903492126ad98b252a55c57 to your computer and use it in GitHub Desktop.
CollectionViewWithInsets
import UIKit
import PlaygroundSupport
class MyViewController: UIViewController {
let collectionView: UICollectionView
let flowLayout: UICollectionViewFlowLayout
init() {
flowLayout = UICollectionViewFlowLayout()
collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: flowLayout)
super.init(nibName: nil, bundle: nil)
setup()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
setupFlowLayout()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setup() {
collectionView.delegate = self
collectionView.dataSource = self
view.backgroundColor = .white
view.addSubview(collectionView)
collectionView.backgroundColor = .white
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
collectionView.collectionViewLayout = flowLayout
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
collectionView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
collectionView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
private func setupFlowLayout() {
flowLayout.itemSize = CGSize(width: view.bounds.width - 40, height: 100)
flowLayout.minimumLineSpacing = 10
flowLayout.minimumInteritemSpacing = 0
}
}
extension MyViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
}
extension MyViewController: UICollectionViewDataSource {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as UICollectionViewCell
cell.backgroundColor = .red
return cell
}
}
let vc = MyViewController()
PlaygroundPage.current.liveView = vc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment