ios - 展开 LazyVStack 显示区域

标签 ios swift swiftui

我有一个由内容异步加载的 View 组成的 ScrollView 。理想情况下,元素可以是无限的,因此我决定将它们包装在 LazyVStack 中。 问题是异步内容需要一些时间来加载,因此当滚动时,它会在一段时间后出现。我想提前一点开始加载。有没有办法让 LazyVStack 认为显示的 View 大一点?

ScrollView {
    LazyVStack {
        ForEach(modelURLs) { modelURL in
            AsyncModel(url: modelURL)
        }
    }
}

最佳答案

我找到了一种适合我的具体情况的解决方案,我希望有一个更好的解决方案:

struct ModelList: View {
    
    let models: [ModelURLs]
    
    private let preloadingPadding: CGFloat = 300  // !!!
    
    var body: some View {
        ScrollView {
            LazyVStack {
                ForEach(modelURLs) { modelURL in
                    AsyncModel(url: modelURL)
                }
            }.padding(preloadingPadding) // !!!
        }.padding(-preloadingPadding) // !!!
    }
}

关于ios - 展开 LazyVStack 显示区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65289475/

相关文章:

ios - 一名委托(delegate)两类

swift - 快速 append 到来自不同类的数组

ios - 如何使用包含具有某些布局的 ZStack 的 navigationLink 导航到详细信息屏幕

swift - 懒惰不行!无法在属性初始值设定项中使用实例成员 'field';属性初始值设定项在 'self' 可用之前运行

json - SwiftUI:尝试加载本地 JSON 数据时,我在 Canvas 中收到预览错误

ios - 如何将 UITableviewcell subview 添加为 uiscrollview

ios - iOS 9 上的 NSURLSession/NSURLConnection HTTP 加载失败

ios - 使用 OCMockito 验证方法调用

ios - 如何从 swift 访问 Objective C 混淆类

ios - Swift NSUserDefaults NSArray 使用 objectForKey