将 NSCollectionLayoutBoundarySupplementaryItem 放在单元格的顶部

问题描述

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

解决方法

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

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

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