我想知道为什么我的UICollectionView重新排序单元格,如果不适合CollectionView的宽度。
添加长" XXXXX .." "超级"细胞移到右边。
p.s经过一些阅读后,我发现问题可能出在" minimumInteritemSpacing"根据其文件。
...after the number of items is determined, the actual spacing may possibly be adjusted upward.
这就是我设置布局的方式
// 2 - setup flowlayout
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.minimumLineSpacing = self.tagSpacing
layout.minimumInteritemSpacing = self.tagSpacing
layout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
layout.scrollDirection = .vertical
答案 0 :(得分:0)
答案是定义我自己的布局。
import UIKit
class CustomViewFlowLayout:UICollectionViewFlowLayout {
let cellSpacing:CGFloat = 0
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
if let attributes = super.layoutAttributesForElements(in: rect) {
for (index, attribute) in attributes.enumerated() {
if index == 0 { continue }
let prevLayoutAttributes = attributes[index - 1]
let origin = prevLayoutAttributes.frame.maxX
if(origin + cellSpacing + attribute.frame.size.width < self.collectionViewContentSize.width) {
attribute.frame.origin.x = origin + cellSpacing
}
}
return attributes
}
return nil
}
}
感谢您的回答here
答案 1 :(得分:0)
UICollectionViewFlowLayout
支持可变大小的单元格,但它将单元格对齐为#34;对齐&#34;。在你的情况下,当你添加一个不适合第一行的新单元格时,布局会证明第一行(使其跨越整行) - 所以基本上它将第一个单元格放在左边,第二个单元格放在第一行对。然后继续下一行。这是对最新情况的解释。
我想你想要一个左对齐的流程。但是,据我所知UICollectionViewFlowLayout
不支持这一点。要实现您的目标,请使用某些第三方库(例如UICollectionViewLeftAlignedLayout),或者查看答案here并实施您自己的布局。