SwiftUI View 扩展可协助无限滚动

滚动视图加载器

一个简单的实用程序,可帮助在ScrollViewSwiftUI 中加载更多内容。

用法

添加.shouldLoadMore到任何ScrollView. 默认情况下,当底部的内容接近可见时,它将被触发ScrollView

查看实际效果

如果您想在真实的应用程序中看到它,请查看dateit

也适用于SwiftUI-Refresher

导航

用法

首先将包添加到您的项目中。

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
}

更多细节

  • 回调只会在接近底部时调用一次。
  • 如果您向上滚动到触发区域之外,那么当您向下滚动时,它将再次调用。
  • 您可以由用户同步和消除重复的多个滚动触发器(取决于您正在加载的数据类型)
  • 如果滚动视图内容发生任何变化,加载条件将被重新评估。

更多示例

批量更大

导航

GitHub

查看 Github