SwiftUi 水平滚动视图,数据来自 Api
SwiftUi horizontal Scrollview with data from Api
我需要使用从 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)
当我删除 scrollview 时,正在加载数据perfectly.Any 建议?谢谢
试试这个:
这是一个简单粗暴的例子...;)
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)
}
}
我需要使用从 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)
当我删除 scrollview 时,正在加载数据perfectly.Any 建议?谢谢
试试这个:
这是一个简单粗暴的例子...;)
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)
}
}