【发布时间】:2018-07-26 11:34:43
【问题描述】:
我正在尝试创建一个 UICollectionView,其中的单元格具有不同的宽度但高度不变。 UICollectionView 有 3 行,水平滚动。
每个单元格应该在它右边的下一个单元格和下面的行之间有 8 像素。我已将此设置为 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。
【问题讨论】:
-
提供您想要实现的具体 UI?
-
@Jaydeep 我附上了我的目标图片
-
我正需要您正在寻找的东西,您找到解决方案了吗?如果是,请在此处添加,谢谢!
标签: ios swift uicollectionview uicollectionviewlayout uicollectionviewflowlayout