SwiftUi 水平滚动视图,带有来自 Api 的数据

Posted

技术标签:

【中文标题】SwiftUi 水平滚动视图,带有来自 Api 的数据【英文标题】:SwiftUi horizontal Scrollview with data from Api 【发布时间】:2020-04-12 19:32:59 【问题描述】:

我需要使用从 api 加载的数据制作一个水平滚动视图。 我有这样的看法:

 ScrollView(.horizontal,showsIndicators:false) 

      HStack(spacing: 20) 
        ForEach(self.images, id: \.self)  item in

                URLImage(URL(string:item)!)
                                proxy in
                                   proxy.image
                                       .resizable()
                               .frame(width: UIScreen.main.bounds.width - 120, height: 200).aspectRatio(contentMode: .fit)
                               .cornerRadius(15)
                               .opacity(0.7)


    

    .onAppear(perform: loadData)

.padding(.all,20)

当我删除滚动视图时,数据正在完美加载。对此有什么建议吗?谢谢

【问题讨论】:

将 .onAppear 修饰符移动到 ScrollView 而不是 HStack 时会发生什么? @unequalsine 什么都没有,白屏 一个 Apple 错误....我可以重现您的错误 @Chris 这个错误有什么解决方案吗? 只是一种解决方法:在显示视图之前加载图像.... 【参考方案1】:

试试这个:

这是一个快速而肮脏的例子... ;)

var imageLoader = ImageLoader()

class ImageLoader 

    var images : [Image] = []

    init() 
        loadData()
    

    func loadData() 

        for _ in 0..<10 
            images.append( Image(systemName: "circle.fill"))
        
    


struct ContentView: View 

       var body: some View 

        ScrollView(.horizontal,showsIndicators:false) 

        HStack(spacing: 20) 

                ForEach(0..<imageLoader.images.count, id: \.self)  item in

                    imageLoader.images[item]
                        .resizable()
                        .frame(width: UIScreen.main.bounds.width - 120, height: 200).aspectRatio(contentMode: .fit)
                        .cornerRadius(15)
                        .opacity(0.7)
                
            .background(Color.yellow)
        .background(Color.orange)
    

【讨论】:

以上是关于SwiftUi 水平滚动视图,带有来自 Api 的数据的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Drag 事件如何限制仅检测水平/垂直滚动

SwiftUI/UIKit:水平滚动视图缩放视图

SwiftUI - 自动滚动水平滚动视图以显示全文标签

SwiftUI:水平滚动视图我能够上下拉图像

SwiftUI URLImage 水平滚动视图

带有渐变的SwiftUI ScrollView文本