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