From 62c819fee11a4df2a649e0f0a6bcbb4a1aa4d112 Mon Sep 17 00:00:00 2001 From: Alex Lykesas Date: Fri, 26 Jun 2020 12:10:37 +0300 Subject: [PATCH 1/3] calculateMinGridColumns --- Pod/Classes/Layouts/DisplaySwitchLayout.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Pod/Classes/Layouts/DisplaySwitchLayout.swift b/Pod/Classes/Layouts/DisplaySwitchLayout.swift index b287261..8f8474b 100644 --- a/Pod/Classes/Layouts/DisplaySwitchLayout.swift +++ b/Pod/Classes/Layouts/DisplaySwitchLayout.swift @@ -19,7 +19,8 @@ private let GridLayoutCountOfColumns = 3 open class DisplaySwitchLayout: UICollectionViewLayout { - fileprivate let numberOfColumns: Int + fileprivate var numberOfColumns: Int + fileprivate var minGridWidth: CGFloat? fileprivate let cellPadding: CGFloat = 6.0 fileprivate let staticCellHeight: CGFloat fileprivate let nextLayoutStaticCellHeight: CGFloat @@ -36,7 +37,7 @@ open class DisplaySwitchLayout: UICollectionViewLayout { // MARK: - Lifecycle - public init(staticCellHeight: CGFloat, nextLayoutStaticCellHeight: CGFloat, layoutState: LayoutState) { + public init(staticCellHeight: CGFloat, nextLayoutStaticCellHeight: CGFloat, layoutState: LayoutState, minGridWidth: CGFloat? = nil) { self.staticCellHeight = staticCellHeight self.numberOfColumns = layoutState == .list ? ListLayoutCountOfColumns : GridLayoutCountOfColumns self.layoutState = layoutState @@ -44,6 +45,11 @@ open class DisplaySwitchLayout: UICollectionViewLayout { super.init() } + + func calculateMinGridColumns() { + guard let minGridWidth = minGridWidth else { return } + self.numberOfColumns = layoutState == .grid ? Int(contentWidth / minGridWidth) : ListLayoutCountOfColumns + } required public init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") From 988728508e1f84e26ba97ebda76b7a34f8289d0b Mon Sep 17 00:00:00 2001 From: Alex Lykesas Date: Fri, 26 Jun 2020 12:12:09 +0300 Subject: [PATCH 2/3] Fix bug with content offset --- Pod/Classes/Layouts/DisplaySwitchLayout.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Pod/Classes/Layouts/DisplaySwitchLayout.swift b/Pod/Classes/Layouts/DisplaySwitchLayout.swift index 8f8474b..a46f329 100644 --- a/Pod/Classes/Layouts/DisplaySwitchLayout.swift +++ b/Pod/Classes/Layouts/DisplaySwitchLayout.swift @@ -60,6 +60,7 @@ open class DisplaySwitchLayout: UICollectionViewLayout { override open func prepare() { super.prepare() + calculateMinGridColumns() baseLayoutAttributes = [DisplaySwitchLayoutAttributes]() // cells layout @@ -106,10 +107,9 @@ open class DisplaySwitchLayout: UICollectionViewLayout { return DisplaySwitchLayoutAttributes.self } - // Fix bug with content offset - override open func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint { + override open func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { let previousContentOffsetPoint = previousContentOffset?.cgPointValue - let superContentOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset) + let superContentOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity) if let previousContentOffsetPoint = previousContentOffsetPoint { if previousContentOffsetPoint.y == 0 { return previousContentOffsetPoint From fe1bb77a2e26532746d063df3fc24fa3fa1d452f Mon Sep 17 00:00:00 2001 From: Alex Lykesas Date: Fri, 26 Jun 2020 14:18:08 +0300 Subject: [PATCH 3/3] fix init - assign minColumnWidth --- Pod/Classes/Layouts/DisplaySwitchLayout.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Pod/Classes/Layouts/DisplaySwitchLayout.swift b/Pod/Classes/Layouts/DisplaySwitchLayout.swift index a46f329..7275116 100644 --- a/Pod/Classes/Layouts/DisplaySwitchLayout.swift +++ b/Pod/Classes/Layouts/DisplaySwitchLayout.swift @@ -42,13 +42,13 @@ open class DisplaySwitchLayout: UICollectionViewLayout { self.numberOfColumns = layoutState == .list ? ListLayoutCountOfColumns : GridLayoutCountOfColumns self.layoutState = layoutState self.nextLayoutStaticCellHeight = nextLayoutStaticCellHeight - + self.minGridWidth = minGridWidth super.init() } func calculateMinGridColumns() { guard let minGridWidth = minGridWidth else { return } - self.numberOfColumns = layoutState == .grid ? Int(contentWidth / minGridWidth) : ListLayoutCountOfColumns + numberOfColumns = layoutState == .grid ? Int(contentWidth / minGridWidth) : ListLayoutCountOfColumns } required public init?(coder aDecoder: NSCoder) {