SwiftUI: componente ZStack
Qué es ZStack
El componente ZStack
permite apilar vistas en el eje Z, lo que da resultado que las vistas se solapen una sobre otra. Por ejemplo, es muy común para mostrar información encima de una imagen. No tiene equivalencia con ningún componente de UIKit
.
Aquí podéis consultar la documentación oficial
Para crear el componente solo necesitaremos embeber en su ViewBuilder
las vistas que podrá mostrar:
ZStack { Color.red .opacity(0.3) .frame(width: 200, height: 200) Color.blue .opacity(0.8) .frame(width: 100, height: 100) }
El ‘inicializador’ tiene otro parámetro que es de utilidad:
ZStack(alignment: Alignment(horizontal: .trailing, vertical: .top)) { Color.red .opacity(0.3) .frame(width: 200, height: 200) Color.blue .opacity(0.8) .frame(width: 100, height: 100) }
alignment
: permite indicar la alineación de las vistas que contiene, tanto en la vertical como en la horizontal. Las opciones disponibles están definidas enAlignment
.
Este ZStack
no tiene el modificado spacing (como VStack
y HStack
). Para mover las vistas dentro del ZStack
se deberá usar el modificador offset
de cada componente.
En el siguiente ejemplo se posiciona un botón sobre una imagen con efecto blur
:
struct ContentView: View { var body: some View { ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) { Image("sdos_office") .resizable() .scaledToFill() .frame(height: 200) .blur(radius: 10) .clipped() Button(action: { //Do something }) { Text("Subscribe to see all the content") .foregroundColor(.white) .padding() } .background(Color.blue.opacity(0.8)) .clipShape(RoundedRectangle(cornerRadius: 20)) } } }
Modificadores comunes para ZStack
El componente ZStack
comparte los mismos métodos de personalización que el componente View
y pueden ser consultados en el siguiente enlace.
Ejemplo
Puedes encontrar este ejemplo en https://github.com/SDOSLabs/SwiftUI-Test bajo el apartado ZStack.
Rafael Fernández,
iOS Tech Lider