微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 CompositionalLayout 时如何将 UICollectionView 部分固定到导航栏最好通过代码,但其他选项也不错

如何解决使用 CompositionalLayout 时如何将 UICollectionView 部分固定到导航栏最好通过代码,但其他选项也不错

我有一个函数来创建一个部分(我想锁定)。我知道如何固定部分标题(通过 pinToVisibleBounds) 我需要在滚动时固定部分(它应该粘在导航栏上)。 创建部分的代码

 private func createEmojiSection() -> NSCollectionLayoutSection {
        let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),heightDimension: .fractionalHeight(1))
        let item = NSCollectionLayoutItem(layoutSize: itemSize)
        item.contentInsets = NSDirectionalEdgeInsets(top: 0,leading: 8,bottom: 0,trailing: 8)
        let groupSize = NSCollectionLayoutSize(widthDimension: .estimated(120),heightDimension: .estimated(50))
        let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,subitems: [item])
        let section = NSCollectionLayoutSection(group: group)
        section.orthogonalScrollingBehavior = .continuous
        section.contentInsets = NSDirectionalEdgeInsets(top: 10,leading: 12,bottom: 15,trailing: 12)
        let header = createHeader()
        section.boundarySupplementaryItems = [header]
        return section
    }

创建布局:

 private func createLayout() -> UICollectionViewLayout {
        let layout = UICollectionViewCompositionalLayout {[weak self](sectionIndex: Int,layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in
            
            guard let section = self?.sections[sectionIndex] else { return nil }
            
            switch section.type {
            case "Numbers":
                return self?.createNumberSection()
            case "Emoji":
                return self?.createEmojiSection()
            case "Names":
                return self?.createStringSection()
            default:
                print("There is no such item")
                return nil
            }
        }
        layout.register(NameSectiondecorationView.self,fordecorationViewOfKind: ViewController.sectionBackgrounddecorationElementKind)
        return layout
    }

如果您需要在代码添加任何其他内容,请写在注释中。

我对所有单元格使用了 xib 并使用代码配置了集合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。