Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. import Foundation
  2. import UIKit
  3.  
  4. class GridLayout: UICollectionViewFlowLayout {
  5.  
  6. private var numberOfColumns: Int = 3
  7. private var height: CGFloat = 0
  8. private var width: CGFloat = 0
  9.  
  10. init(numberOfColumns: Int) {
  11. super.init()
  12. minimumLineSpacing = 1
  13. minimumInteritemSpacing = 1
  14.  
  15. self.numberOfColumns = numberOfColumns
  16. }
  17.  
  18. init(numberOfColumns: Int, height: CGFloat, width: CGFloat, lineSpacing: CGFloat, interItemSpacing: CGFloat) {
  19. super.init()
  20.  
  21. minimumLineSpacing = lineSpacing
  22. minimumInteritemSpacing = interItemSpacing
  23.  
  24. self.numberOfColumns = numberOfColumns
  25. self.height = height
  26. self.width = width
  27. }
  28.  
  29. required init?(coder aDecoder: NSCoder) {
  30. fatalError("init(coder:) has not been implemented")
  31. }
  32.  
  33. override var itemSize: CGSize {
  34. get {
  35. if let collectionView = collectionView {
  36. if width == 0 {
  37. width = (collectionView.frame.width/CGFloat(self.numberOfColumns)) - self.minimumInteritemSpacing
  38. }
  39.  
  40. if height == 0 {
  41. height = (collectionView.frame.width/CGFloat(self.numberOfColumns)) - self.minimumInteritemSpacing
  42. }
  43.  
  44. return CGSize(width: width, height: height)
  45. }
  46.  
  47. // Default fallback
  48. return CGSize(width: 100, height: 100)
  49. }
  50. set {
  51. super.itemSize = newValue
  52. }
  53. }
  54.  
  55. override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
  56. if let collectionView = collectionView {
  57. return collectionView.contentOffset
  58. }
  59. return CGPoint.zero
  60. }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement