Quero que a imagem de fundo e o elemento verde da interface do usuário estejam na parte superior da tela, mas com o código abaixo dos elementos verdes da interface do usuário no meio.
código:
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: como mover a visualização verde para o topo
[![insira a descrição da imagem aqui][1]][1]
EDITAR:
esta é minha imagem de fundo: por favor, tente com este BG.. eu sempre tenho o mesmo o/p
Para alcançar o resultado que presumo que você espera, primeiro você precisa passar
Spacer
deZStack
paraVStack
. Aqui está o snippet de código editado para sua referência:Aqui está o resultado:
(Na captura de tela você vê outra imagem de fundo e outra cor verde, porque obviamente não tenho seus ativos fora do padrão.)
Também brinquei
Button
um pouco com os preenchimentos para corrigi-los - talvez isso seja outra coisa que você queira consertar.A razão pela qual você vê apenas uma barra verde fina na parte superior da segunda captura de tela é porque a imagem de fundo está dentro
ZStack
e está sendo dimensionada para preencher. Isso aumenta o tamanho doZStack
para o tamanho da imagem, que inclui conteúdo fora da tela.Eu sugeriria aplicar a imagem usando
.background
, então você nem precisa de umZStack
. Também:maxHeight: .infinity
aoVStack
, para que ele preencha toda a altura da tela.alignment: .top
, para que a barra verde apareça no topo da tela..ignoresSafeArea()
no fundo verde, pois isso acontece por padrão. Veja background(_:ignoresSafeAreaEdges:) .Você pode simplesmente configurar
alignment
o ZStack, é.center
por padrão: