在iOS 9下,Collection View会混淆最小行间距和最小间隔间距

时间:2017-02-28 09:25:31

标签: ios swift uicollectionview uicollectionviewlayout

关于UICollectionView的行为,我遇到了一个非常奇怪的问题,我认为集合视图和我都很困惑。

我在项目中实现了一个带有水平滚动方向的特定集合视图,并且在质量保证发布错误票后不久,说明某些设备上集合视图项之间的间距不正确。我进一步检查了这个bug并意识到问题不仅存在于特定设备上,而且通常存在于运行iOS 9的所有设备上。在iOS 10上,一切都按预期工作。

所以我创建了一个简单的示例项目来隔离可以在GitHub上找到的潜在问题:

Interactive Sample Project that shows the problem

首先,我更加困惑的是示例项目没有显示iOS 9错误。但是,只要我将estimatedItemSize设置为非零值以便使用自调整单元格(即自动布局),就会再次出现相同的错误间距。

我认为仅在这些特殊情况下 - iOS 9 + estimatedItemSize != .zero - 集合视图实际上混淆 minimumLineSpacing与{{ 1}},至少在实现相应的流布局委托函数时:

collectionView(_:layout:minimumLineSpacingForSectionAt:) collectionView(_:layout:minimumInteritemSpacingForSectionAt:)

因此,只要您想指定其中一个间距,就必须实现另一个间距。

对我来说,这似乎是一个严重的系统错误,但它是如此重要,我无法相信没有其他人遇到过这个问题。因此, I 更有可能在我的代码中或在理解这些间距如何工作方面犯了一些错误(尽管在Apple Docs中已明确描述了链接的委托方法上文)。

为什么集合视图混合了两个维度?

estimatedItemSize == .zero estimatedItemSize != .zero

"使用自动布局"示例项目中的切换在minimumInteritemSpacing(已禁用)和estimatedItemSize(已启用)之间切换.zero

0 个答案:

没有答案