From de37d0b4d63830f6a63bf07b2e8b92020175cf7e Mon Sep 17 00:00:00 2001 From: Apollo Zhu Date: Thu, 9 Dec 2021 17:23:44 -0800 Subject: [PATCH] Add delegate method for minimumColumnSpacing Fix #207 --- Source/CHTCollectionViewWaterfallLayout.swift | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/CHTCollectionViewWaterfallLayout.swift b/Source/CHTCollectionViewWaterfallLayout.swift index 635eee4..cc7ae7c 100755 --- a/Source/CHTCollectionViewWaterfallLayout.swift +++ b/Source/CHTCollectionViewWaterfallLayout.swift @@ -53,6 +53,10 @@ private func > (lhs: T?, rhs: T?) -> Bool { @objc optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, columnCountFor section: Int) -> Int + + @objc optional func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + minimumColumnSpacingFor section: Int) -> CGFloat @available(*, unavailable, renamed: "collectionView(_:layout:sizeForItemAt:)") @objc optional func collectionView (_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, @@ -205,10 +209,13 @@ public class CHTCollectionViewWaterfallLayout: UICollectionViewLayout { } public func itemWidth(inSection section: Int) -> CGFloat { - let columnCount = self.columnCount(forSection: section) - let spaceColumCount = CGFloat(columnCount - 1) let width = collectionViewContentWidth(ofSection: section) - return floor((width - (spaceColumCount * minimumColumnSpacing)) / CGFloat(columnCount)) + + let columnCount = self.columnCount(forSection: section) + let spaceColumnCount = CGFloat(columnCount - 1) + let columnSpacing = delegate?.collectionView?(collectionView!, layout: self, minimumColumnSpacingFor: section) ?? minimumColumnSpacing + + return floor((width - (spaceColumnCount * columnSpacing)) / CGFloat(columnCount)) } override public func prepare() {