Posteriormente a investigar con expertos en la materia, programadores de diversas ramas y profesores dimos con la respuesta al problema y la plasmamos en este post.
Solución:
Espero hidden
el modificador obtiene el argumento más tarde, pero desde entonces, establezca el alfa en su lugar:
@State var shouldHide = false
var body: some View
Button("Button") self.shouldHide = true
.opacity(shouldHide ? 0 : 1)
Para mí funcionó perfectamente para configurar el frame
la altura a cero cuando no quieras verla. Cuando desee tener el tamaño calculado, simplemente configúrelo en nil
:
SomeView
.frame(height: isVisible ? nil : 0)
Si desea deshabilitarlo además de ocultarlo, puede configurar .disabled
con el booleano alternado.
SomeView
.frame(height: isVisible ? nil : 0)
.disabled(!isVisible)
Puede utilizar los nuevos enlaces bidireccionales de SwiftUI y agregar una declaración if como:
struct ContentView: View
@State var shouldHide = false
var body: some View
ZStack
Color("SkyBlue")
VStack
if !self.$shouldHide.wrappedValue
Button("Detect")
self.imageDetectionVM.detect(self.selectedImage)
.padding()
.background(Color.orange)
.foregroundColor(Color.white)
.cornerRadius(10)
El beneficio de hacer esto en lugar de establecer la opacidad en 0 es que eliminará el espacio/relleno extraño de su interfaz de usuario causado por el botón que aún está en la vista, simplemente no visible (si el botón está entre otros componentes de la vista, es decir) .
Si posees alguna suspicacia o forma de progresar nuestro enunciado puedes escribir una nota y con placer lo ojearemos.