SwiftUI View 扩展可协助无限滚动
滚动视图加载器
一个简单的实用程序,可帮助在ScrollView
SwiftUI 中加载更多内容。
用法
添加.shouldLoadMore
到任何ScrollView
. 默认情况下,当底部的内容接近可见时,它将被触发ScrollView
。
查看实际效果
如果您想在真实的应用程序中看到它,请查看dateit
用法
首先将包添加到您的项目中。
import ScrollViewLoader
struct ContentView: View {
@State var data: [Int] = Array(0..<1)
var body: some View {
ScrollView {
LazyVStack {
ForEach(data, id: \.self) { i in
Text("\(i)")
.font(.title)
.frame(maxWidth: .infinity)
}
ProgressView()
.scaleEffect(2)
}
}
.shouldLoadMore {
await Task.sleep(seconds: 0.05)
data.append(data.last! + 1)
}
}
}
定制化
50%
默认情况下,当到可滚动内容底部的距离小于滚动视图的可见高度时,将触发回调。您可以自定义这个
将相对偏移设置为20%
而不是默认值50%
:
.shouldLoadMore(bottomDistance: .relative(0.2)) {
// Load more
}
将绝对偏移设置为固定值:
.shouldLoadMore(bottomDistance: .absolute(200)) {
// Load more
}
更多细节
- 回调只会在接近底部时调用一次。
- 如果您向上滚动到触发区域之外,那么当您向下滚动时,它将再次调用。
- 您可以由用户同步和消除重复的多个滚动触发器(取决于您正在加载的数据类型)
- 如果滚动视图内容发生任何变化,加载条件将被重新评估。
更多示例
批量更大