Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- import UIKit
- class GridLayout: UICollectionViewFlowLayout {
- private var numberOfColumns: Int = 3
- private var height: CGFloat = 0
- private var width: CGFloat = 0
- init(numberOfColumns: Int) {
- super.init()
- minimumLineSpacing = 1
- minimumInteritemSpacing = 1
- self.numberOfColumns = numberOfColumns
- }
- init(numberOfColumns: Int, height: CGFloat, width: CGFloat, lineSpacing: CGFloat, interItemSpacing: CGFloat) {
- super.init()
- minimumLineSpacing = lineSpacing
- minimumInteritemSpacing = interItemSpacing
- self.numberOfColumns = numberOfColumns
- self.height = height
- self.width = width
- }
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override var itemSize: CGSize {
- get {
- if let collectionView = collectionView {
- if width == 0 {
- width = (collectionView.frame.width/CGFloat(self.numberOfColumns)) - self.minimumInteritemSpacing
- }
- if height == 0 {
- height = (collectionView.frame.width/CGFloat(self.numberOfColumns)) - self.minimumInteritemSpacing
- }
- return CGSize(width: width, height: height)
- }
- // Default fallback
- return CGSize(width: 100, height: 100)
- }
- set {
- super.itemSize = newValue
- }
- }
- override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
- if let collectionView = collectionView {
- return collectionView.contentOffset
- }
- return CGPoint.zero
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement