Ios 向ScrollView注入按钮

Ios 向ScrollView注入按钮,ios,swiftui,Ios,Swiftui,我正在开发一款iOS应用程序,它依赖于SwiftUI 我有一个ZStack视图,在它里面,我调用另一个带有按钮的视图 ZStack(alignment: .bottomTrailing) { ImageStepView(data: self.data[randomImageNum]) Button(action: { self.showFavorites = true }) { HStack { Image(systemName: &qu

我正在开发一款iOS应用程序,它依赖于SwiftUI

我有一个ZStack视图,在它里面,我调用另一个带有按钮的视图

ZStack(alignment: .bottomTrailing) {
    ImageStepView(data: self.data[randomImageNum])

    Button(action: { self.showFavorites = true }) {
        HStack {
            Image(systemName: "suit.heart.fill")
            Text("FAVORITES")
        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 15)
        .foregroundColor(.white)
        .padding()
        .background(Color.black.opacity(0.6))
        .cornerRadius(5)
        .padding(.horizontal, 20)
    }
}
ImageStepView.swift

struct ImageStepView: View {
    var data: ImageDataModel
        
    var body: some View {
        
        GeometryReader { geometry in
            ScrollView(.vertical) {
                VStack{
                    Image(data.image)
                        .resizable() 
                        .border(Color.white, width: 5)
                        .overlay(
                            Rectangle().stroke(Color.white, lineWidth: 4))
                        .shadow(color: Color.gray, radius: 10, x: 10, y: 10)
                        .scaledToFit()
                        .frame(height: geometry.size.height-110)
                } .padding()
                VStack{
                    
                    VStack(alignment: .leading) {
                        HStack{...}
                        HStack {...}
                    }
                    Spacer()
                        .frame(height: 50)
                    VStack(alignment: .leading){
                        VStack{
                            HStack {...}
                            HStack {...}
                            HStack {...}
                        }
                    }
                }.padding()
            }.background(Color("Color").ignoresSafeArea(.all))
            .frame(width: geometry.size.width)
            .frame(minHeight: geometry.size.height)
        }
    }
}
ImageStepView
有一个
ScroolView
,这就是为什么
按钮不出现在
ScroolView
的末尾,而是出现在屏幕的底部


我想要的是显示
按钮
而不是在屏幕底部,而是
ImageStepView
的末尾。您可以使
ImageStepView
接受一个通用参数-要注入的视图:

struct ImageStepView<Injected: View>: View {
    var data: ImageDataModel
    var injectedView: () -> Injected

    var body: some View {
        GeometryReader { geometry in
            ScrollView(.vertical) {
                // ScrollView contents
                injectedView()
            }
            .background(Color("Color").ignoresSafeArea(.all))
            .frame(width: geometry.size.width)
            .frame(minHeight: geometry.size.height)
        }
    }
}


我想使用
ImageStepView
作为通用视图,但无论如何,我复制了视图并在其上添加了绑定按钮。谢谢。@ilvthsgm我用一个通用
ImageStepView
的解决方案更新了我的答案。
ImageStepView(data: self.data[randomImageNum]) {
    Button(action: { self.showFavorites = true }) { ... }
}
ImageStepView(data: self.data[randomImageNum]) { EmptyView() }