Ios 向ScrollView注入按钮
我正在开发一款iOS应用程序,它依赖于SwiftUI 我有一个ZStack视图,在它里面,我调用另一个带有按钮的视图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
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() }