Grz*_*ski 3 ios autolayout uicollectionview uicollectionviewlayout swift
我正在尝试仅用 1 行实现水平滚动集合视图。我发现实现这一点的最简单方法是准备自定义流程布局:
class CollectionViewLayoutHorizontal : UICollectionViewFlowLayout {
override init() {
super.init()
//that enables self-sizing cells
self.estimatedItemSize = CGSize(width: 1, height: 1)
self.scrollDirection = .horizontal
//that one should ensure that only one line fits
//using CGFloat.greatestFiniteMagnitude aka CGFLOATMAX breaks collection view completely
self.minimumInteritemSpacing = 1000
self.minimumLineSpacing = 10
}
}
Run Code Online (Sandbox Code Playgroud)
我的所有单元格都正确显示 - 即使它们小得多,它们也位于集合视图中间彼此相邻的位置。但问题是末尾(最后一个单元格之后)有一个额外的空白空间,其大小minimumInteritemSpacing是意想不到的。
有人解决这个问题吗?
我知道这是一个老问题,但仍然没有明确的答案。
我最近在 iOS 12 上使用 Swift 4.2 时遇到了同样的问题。经过一些调查,我发现如果将 设为minimumLineSpacing小于默认值(即10)的值,那么流布局将添加此差异乘以(项目数) - 1) 作为集合视图末尾的额外空间。(看起来总数contentSize还是用默认值计算的?)
无论如何,我能够通过将 设为minimumInteritemSpacing与 相同的值来解决这个问题minimumLineSpacing,在我的例子中这2对于两者都是如此。
我知道这没有任何意义,因为我的集合视图是一条具有水平滚动集合视图流布局的单行,因此minimumInteritemSpacing在布置项目时应该没有任何效果,但显然它确实如此,这确实可以消除末尾有额外的空间。
| 归档时间: |
|
| 查看次数: |
2781 次 |
| 最近记录: |