Estoy tratando de crear una barra desplegable personalizada en SwiftUI. Se parece a esto:

VStack{
   Text("Dropdown").onTapGesture{
      self.expand.toggle()
   }
   if expand {
      Text("Dropdown Item 1")
      Text("Dropdown Item 2")
   }
}
.padding(10)
.background(.green)
.cornerRadius(10)
.animation(.spring())

Expandir es una variable @State var.

El problema actual es que cuando se hace clic en Texto ("Menú desplegable"), VStack se expande en ambos sentidos. ¿Hay alguna forma de que VStack solo se expanda hacia abajo?

1
Louis Ye 29 ago. 2020 a las 03:04

1 respuesta

La mejor respuesta

Puede depender del diseño general, pero en la instantánea de código proporcionada se puede resolver cambiando la guía de alineación como se muestra a continuación en la demostración.

demo

VStack{
    Text("Dropdown").onTapGesture{
        self.expand.toggle()
    }
    if expand {
        Text("Dropdown Item 1")
        Text("Dropdown Item 2")
    }
}
.padding(10)
.background(Color.green)
.cornerRadius(10)
.animation(.spring())
.alignmentGuide(VerticalAlignment.center) { $0[.top] }    // << here !!
1
Asperi 29 ago. 2020 a las 04:27