SwiftUI:如何在用户滑动时实现分页? 先前使用的UICollectionView->启用分页

问题描述

背景:我正在将项目从UIKit转换为SwiftUI。当前使用UIKit,我在UICollectionView中有一个UICollectionView,两者都启用了Paging。这使用户可以在单元格上向上/向下和向左/向右滑动。每个单元格都充满整个屏幕(类似于TikTok的主UI),每个单元格都有大量数据要从Firebase中提取,因此我不想在出现第一个视图时加载所有项目,而是因为每个单元格都会出现(这是通过UICollectionView委托在UIKit下实现的当前实现。

问题::我找不到在SwiftUI中启用此“分页”(基于用户滑动)的方法。很难想象苹果没有分页功能就创建了这个新框架吗?如果他们未包括在内,是否有解决方法?否则,有没有一种简单的方法可以将UICollectionView包含到SwiftUIView中?

任何帮助或解决方法都不错!谢谢:)

解决方法

SwiftUI 2

您可能需要LazyGrid

以下是垂直网格的示例代码:

struct ContentView: View {
    let data = (1...1000).map { "Item \($0)" }

    let columns = [
        GridItem(.adaptive(minimum: 80))
    ]

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns,spacing: 20) {
                ForEach(data,id: \.self) { item in
                    Text(item)
                }
            }
            .padding(.horizontal)
        }
    }
}

您可以在以下链接中找到更多信息:


SwiftUI 1

如果您绑定的iOS 13或LazyGrid与您的期望不符,您仍然可以将UICollectionView包装在UIViewRepresentable中。

有关更多说明,请参见此链接:Implementing UICollectionView / UICollectionView DiffableDataSource in SwiftUI

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...