如下图要实现内容居左对齐,先获取每个cell的宽度,然后自定义UICollectionViewFlowLayout,以下方法只是实现简单需求:
image.png
第一步自定义UICollectionViewFlowLayout
class SelectTypeFlowLayout: UICollectionViewFlowLayout {
override func prepare() {
super.prepare()
minimumLineSpacing = 15 //cell的间距
minimumInteritemSpacing = 10
sectionInset = UIEdgeInsetsMake(0, ScaleWidth(15), 0, ScaleWidth(15))
collectionView?.alwaysBounceVertical = true
}
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
//获取系统帮我们计算好的Attributes
let layoutAttributes = super.layoutAttributesForElements(in: rect)
for i in 1..<layoutAttributes!.count {
//获取cell的Attribute,根据上一个cell获取最大的x,定义为originX
let current = layoutAttributes![i]
let last = layoutAttributes![i-1]
let originX = last.frame.origin.x + last.frame.size.width
if current.frame.origin.y == last.frame.origin.y {
current.frame.origin.x = originX+minimumInteritemSpacing
}
}
return layoutAttributes
}
}