我无法UICollectionViewCompositionalLayout
在单元格顶部添加页脚。具体来说,我想在我的页脚中有一个交互式控件(在我的例子中是一个 UIPageControl)。这是一个示例布局,
func generateLayout() -> UICollectionViewCompositionalLayout {
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1)))
let groupSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .absolute(213)
)
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitem: item, count: 1)
let section = NSCollectionLayoutSection(group: group)
section.boundarySupplementaryItems = [footer()]
return UICollectionViewCompositionalLayout(section: section)
}
页脚的配置如下,
private func footer() -> NSCollectionLayoutBoundarySupplementaryItem {
let size = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .absolute(20))
let item = NSCollectionLayoutBoundarySupplementaryItem(
layoutSize: size,
elementKind: "footer-kind",
alignment: .bottom,
absoluteOffset: .init(x: 0, y: -30)
)
item.zIndex = 1000
return item
}
假设我的页脚中有一个按钮,我想点击它。我已更改页脚的 zIndex,因此它高于我部分中的其他视图。
class FooterCell: UICollectionReusableView {
override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) {
super.apply(layoutAttributes)
layer.zPosition = CGFloat(layoutAttributes.zIndex)
}
}
上面代码片段的结果是按钮在单元格顶部可见,但不可点击。在视图调试器中进行一些检查后,很明显补充视图被添加到单元格之前的视图层次结构中,并且更改 zIndex 只会将图层移动到前面,而不是完整的视图。有没有办法改变视图在组合布局中的添加顺序?或者有没有其他方法可以将页脚视图带到单元格上方?