我希望背景图像和绿色 UI 元素位于屏幕顶部,但代码位于绿色 UI 元素下方的中间。
代码:
struct AppointmentStep1: View {
@Environment(\.dismiss) var dismiss
var body: some View {
ZStack {
// Background image
Image("home_bg")
.resizable()
.scaledToFill()
.edgesIgnoringSafeArea(.all)
VStack {
HStack {
Button {
dismiss()
} label: {
Image(systemName: "arrow.left")
.font(.system(size: 25))
.tint(.white)
.padding(.trailing, 6)
}
Text("Appointment")
.font(.calibriRegular(with: 20))
.foregroundStyle(.white)
Spacer()
}
.padding(16)
}
.background(
Color.appGreen2
.ignoresSafeArea()
)
Spacer()
}
}
}
o/p:如何将绿色视图移至顶部
[![在此处输入图像描述][1]][1]
编辑:
这是我的背景图片:请尝试使用这个背景..我总是得到相同的o/p
为了实现我认为您期望的结果,首先您需要
Spacer
从移动ZStack
到VStack
。以下是编辑后的代码片段供您参考:结果如下:
(在屏幕截图上,您会看到另一个背景图像和另一个绿色,因为我显然没有您的非标准资产。)
我还用填充物来
Button
修复它们——也许这是你想要修复的另一件事。您在第二个屏幕截图的顶部只看到一条绿色细条的原因是因为背景图像位于内部
ZStack
并且正在缩放以填充。这会将 的大小增加到ZStack
图像的大小,其中包括屏幕外的内容。我建议使用应用图像
.background
,那么你甚至不需要ZStack
. 还:maxHeight: .infinity
使其VStack
充满整个屏幕高度。alignment: .top
,使绿色条出现在屏幕顶部。.ignoresSafeArea()
到绿色背景,因为默认情况下会发生这种情况。请参阅背景(_:ignoresSafeAreaEdges :)。你可以简单地设置
alignment
ZStack,它是.center
默认的: