我在每个尝试重新创建 AppStore 布局的教程中都看到了这种代码:
...
let group = NSCollectionLayoutGroup.horizontal(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.95), heightDimension: .absolute(300)), subitems: [item])
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .groupPaging
...
重要的部分是组分数宽度 < 1.0。所以对于这个例子,假设我们在那个水平组中有 3 个项目 + 一些其他部分,就像 AppStore 一样。现在,如果我水平滚动到该水平组中的第三个项目,然后我垂直向下滚动,然后向上滚动,结果总是相同的:现在第二个项目在该组中居中,而不是第三个居中当我开始向下滚动时。
我还注意到水平滚动该组时存在一些奇怪的滚动伪影:有时当我将第一个项目向左拖动并释放时,它只是跳回中心而没有动画。或者当我滚动到最后一项然后尝试向右滚动更多时,它只会弹回第一项。
这真的很奇怪,看起来像 UICollectionViewCompositionalLayout 实现中的一个错误或这个 + iOS 版本的组合。有没有人遇到过类似的问题,也许知道解决方法?我看到每种类型的寻呼都会发生这种情况。
编辑:我刚刚了解到这个问题是 iOS 14 特有的,我在 iOS 13.7 模拟器上测试了我的应用程序,它在那里正常工作。