如何解决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 Lazy Grid Tutorial
- Impossible Grids with SwiftUI
- How to position views in a grid using LazyVGrid and LazyHGrid
SwiftUI 1
如果您绑定的iOS 13或LazyGrid
与您的期望不符,您仍然可以将UICollectionView
包装在UIViewRepresentable
中。
有关更多说明,请参见此链接:Implementing UICollectionView / UICollectionView DiffableDataSource in SwiftUI
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。