如何将水平图像列表居中SwiftUI

如何将水平图像列表居中SwiftUI,swift,swiftui,Swift,Swiftui,如果我的后端服务器发送给我的图像少于7ı,我想将我的水平社交媒体图像列表居中。如果我得到7个社交媒体图标,它看起来没问题,但如果我得到2个、3个或5个图标,我想将它们始终显示在中心位置。我的意思是 在第二张图片中,你们可以看到它们看起来是分开的,但我想把它们一起显示在中间位置。我该怎么做 这是我的密码 HStack(alignment:.center,spacing : 0) { ForEach(data.options ?? [] , i

如果我的后端服务器发送给我的图像少于7ı,我想将我的水平社交媒体图像列表居中。如果我得到7个社交媒体图标,它看起来没问题,但如果我得到2个、3个或5个图标,我想将它们始终显示在中心位置。我的意思是

在第二张图片中,你们可以看到它们看起来是分开的,但我想把它们一起显示在中间位置。我该怎么做

这是我的密码

 HStack(alignment:.center,spacing : 0) {
            
            ForEach(data.options ?? [] , id:\.id) { item in
                
                    if item.icon != nil {
                        
                        Image(uiImage:(item.icon ?? "").load())
                            .resizable()
                        
                    } else {
                        
                        GeometryReader { geometry in
                                     Image(item.type ?? "")
                                        .resizable()
                                        .frame(width:UIScreen.main.bounds.width * 0.065,alignment:.center)
                                        .frame(width:geometry.size.width / 1,height:25,alignment:.center)
                                }
                                
                            
                        }.padding(EdgeInsets(top: 0, leading: 0, bottom: UIScreen.main.bounds.height * 0.050, trailing: 0))
                        
                    }
                
            }

您是否尝试过在每一侧添加间隔垫圈()?在ForEach语句之前添加一个,在ForEach语句之后添加另一个。我想这会让他们走得更近

因此:


您是否尝试过在每一侧添加间隔垫圈()?在ForEach语句之前添加一个,在ForEach语句之后添加另一个。我想这会让他们走得更近

因此:


我无法重播您的数据项,您没有共享结构,但它的工作方式如下:


我无法重播您的数据项,您没有共享结构,但它的工作方式如下:


它不起作用。实际上,它显示在一起,但在所有宽度上只有两个图标,因此图标看起来很大。您可以调整图标的大小,但没有进一步的修改器。如果您添加了一些限制其大小的图标(如.frame(高度:50)),这可能会有所帮助。我尝试过,但也不起作用。它不起作用。实际上,它显示在一起,但在所有宽度上只有两个图标,因此图标看起来很大。您可以调整图标的大小,但没有进一步的修改器。如果您添加了一些限制其大小的图标(如.frame)(身高:50),可能会有帮助。我试过了,但也没用。
HStack {
    Spacer()

    ForEach {
       Code
    }

    Spacer()
}
struct Icon: Identifiable, Hashable {
    var name: String
    var icon: Image? {return Image(name)}
    public var id:String {return self.name}
}

struct ContentView: View {
    
    @State var icons: [Icon] = [Icon(name:"1")]
    @State var prog = 1
    var body: some View {
        
        VStack {
            Button(action: {
                prog += 1
                icons.append(Icon(name:String(prog)))
            }, label: {
                Text("Add")
            })
            Button(action: {
                prog -= 1
                icons.removeLast()
            }, label: {
                Text("Remove")
            })
            HStack(alignment:.center,spacing : 0) {

                ForEach(icons, id:\.self) { item in

                    if item.icon == nil {

                        EmptyView()

                    }
                    else {
                        
                        item.icon!
                            .resizable()
                            .frame(width:UIScreen.main.bounds.width * 0.085,height:UIScreen.main.bounds.width * 0.085,alignment:.center)
                            .padding(6)
                    }
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}