问题描述
我使用 CompositionalLayout 和 DiffableDatasource API 创建了一个 UICollectionView。除了向上移动的 Orthogonal ScrollView 之外,一切正常且看起来如预期。
以下屏幕截图显示了我的视图层次结构的相关部分。突出显示的视图是 UICollectionViewOrthogonalScrollerEmbeddedScrollView,如您所见,它的大小似乎正确,但沿 y 轴的位置不正确。
除了在布局的错误区域识别滚动手势外,上方标题元素中的按钮无法访问,因为它被所述滚动视图挡住了。
这是我的 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 (将#修改为@)