1

我无法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 只会将图层移动到前面,而不是完整的视图。有没有办法改变视图在组合布局中的添加顺序?或者有没有其他方法可以将页脚视图带到单元格上方?

4

0 回答 0