UICollectionView 组合布局:正交 ScrollView 向上移动

问题描述

我使用 CompositionalLayout 和 DiffableDatasource API 创建了一个 UICollectionView。除了向上移动的 Orthogonal ScrollView 之外,一切正常且看起来如预期。

以下屏幕截图显示了我的视图层次结构的相关部分。突出显示的视图是 UICollectionViewOrthogonalScrollerEmbeddedScrollView,如您所见,它的大小似乎正确,但沿 y 轴的位置不正确。

View Hierarchy Snapshot

除了在布局的错误区域识别滚动手势外,上方标题元素中的按钮无法访问,因为它被所述滚动视图挡住了。

这是我的 NSCollectionLayoutSection 的定义:

            let fractionalGroupWidth: CGFloat = 0.85
            
            //Define Item Size
            let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1),heightDimension: .estimated(60))
            let item1 = NSCollectionLayoutItem(layoutSize: itemSize,supplementaryItems: [UICollectionView.getSeparatorSupplementaryItem(ofKind: "Separator1",withLeadingOffset: 72,forAbsoluteWidth: self.collectionView.frame.width*fractionalGroupWidth)])
            let item2 = NSCollectionLayoutItem(layoutSize: itemSize,supplementaryItems: [UICollectionView.getSeparatorSupplementaryItem(ofKind: "Separator2",forAbsoluteWidth: self.collectionView.frame.width*fractionalGroupWidth)])
            let item3 = NSCollectionLayoutItem(layoutSize: itemSize)
            
            //Define Group Size
            let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(fractionalGroupWidth),heightDimension: .estimated(180))
            let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize,subitems: [item1,item2,item3])
            group.interItemSpacing = .fixed(12)
            
            let section = NSCollectionLayoutSection(group: group)
            section.contentInsets = NSDirectionalEdgeInsets(top: 16,leading: 16,bottom: 16,trailing: 16)
            section.interGroupSpacing = 16
            section.orthogonalScrollingBehavior = .groupPaging
            
            if sectionData.title != nil || sectionData.shortTitle != nil{
                let headerSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),heightDimension: .absolute(40))
                let headerElement = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerSize,elementKind: UICollectionView.elementKindSectionHeader,alignment: .top)
                section.boundarySupplementaryItems = [headerElement]
            }
            
            return section

我尝试将单个项目以及组的高度尺寸从分数更改为估计值或绝对值,并尝试调整 contentInsets。以上都对滚动视图没有任何影响。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)