幅はさまざまだが高さは一定のセルで UICollectionView を作成しようとしています。UICollectionView には 3 つの行があり、水平方向にスクロールします。
各セルには、その右隣のセルとその下の行の間に 8px が必要です。これを IB の最小間隔として設定しました。
スクロールを垂直に設定すると、次のコードが機能し、すべてのセルが左に配置され、すべてのセル間の間隔が 8px になります。ただし、スクロールが水平のときにこのコードを使用すると、これは機能しません。
どんな方向性でも大歓迎です。
class HorizontalCollectionViewFlowLayout: UICollectionViewFlowLayout {
override init(){
super.init()
scrollDirection = .horizontal
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.scrollDirection = .horizontal
}
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let attributes = super.layoutAttributesForElements(in: rect)
var leftMargin = sectionInset.left
var maxY: CGFloat = -1.0
attributes?.forEach { layoutAttribute in
if layoutAttribute.frame.origin.y >= maxY {
leftMargin = sectionInset.left
}
layoutAttribute.frame.origin.x = leftMargin
leftMargin += layoutAttribute.frame.width + minimumInteritemSpacing
maxY = max(layoutAttribute.frame.maxY , maxY)
}
return attributes
}
}
編集:これは私が達成しようとしている UI です。