水平滚动时如何使UICollectionViewCells左对齐?

时间:2018-07-26 11:34:44

标签: ios swift uicollectionview uicollectionviewlayout uicollectionviewflowlayout

我正在尝试使用宽度可变但高度恒定的单元格创建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。

enter image description here

0 个答案:

没有答案