如何解决UICollectionViewCompositionalLayout,其组宽度小于节宽度和分页
在每个试图重新创建AppStore布局的教程中,我都会看到这种代码:
...
let group = NSCollectionLayoutGroup.horizontal(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.95),heightDimension: .absolute(300)),subitems: [item])
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .groupPaging
...
重要的是组分数宽度
我还注意到,在水平滚动该组时会出现一些奇怪的滚动伪像:有时,当我向左拖动第一个项目并释放时,它只是跳回中心而没有动画。或者,当我滚动到最后一个项目,然后尝试向右滚动更多时,它会弹回到第一个项目。
这真的很奇怪,看起来像是UICollectionViewCompositionalLayout实现中的错误或此+ iOS版本的组合。有没有人遇到类似的问题,也许知道解决方法?我看到每种类型的页面调度都在发生这种情况。
编辑:我刚刚了解到此问题是iOS 14特有的,我在iOS 13.7模拟器上测试了我的应用程序,并且该应用程序在那可以正常工作。
解决方法
在向右滚动并跳到倒数第二个项目的最后一个项目上,我也有同样的问题。
,在我的情况下,我无法完全滚动到最后一个项目,所以我尝试为该组设置负尾随插入并且它起作用了:
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1),heightDimension: .estimated(55))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.75),heightDimension: .estimated(55 * 3 + 16))
let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize,subitem: item,count: 3)
group.interItemSpacing = .fixed(.centi)
// Here
group.contentInsets = NSDirectionalEdgeInsets(top: 0,leading: 0,bottom: 0,trailing: -view.bounds.width * 0.25)
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .groupPaging
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。