Swiftui 带有布尔标志的淡入/淡出动画

Swiftui 带有布尔标志的淡入/淡出动画,swiftui,swiftui-animation,Swiftui,Swiftui Animation,我尝试在SwiftUI中使用淡入/淡出动画实现一个简单的“点击切换UI的可见性”。下面的代码按照我的预期设置了文本元素淡入效果的动画,但是当isVisible变为false时,它会立即隐藏文本元素 我想了解为什么这段代码不起作用,以及如何以最自然的方式修复它 import SwiftUI struct ContentView: View { @State var isVisible = true var body: some View { ZStack {

我尝试在SwiftUI中使用淡入/淡出动画实现一个简单的“点击切换UI的可见性”。下面的代码按照我的预期设置了文本元素淡入效果的动画,但是当isVisible变为false时,它会立即隐藏文本元素

我想了解为什么这段代码不起作用,以及如何以最自然的方式修复它

import SwiftUI

struct ContentView: View {
    @State var isVisible = true
    var body: some View {
        ZStack {
            Rectangle()
                .foregroundColor(.blue)
                .gesture(TapGesture(count: 1).onEnded {
                    withAnimation(.easeInOut(duration: 1.0)) {
                        isVisible.toggle()
                    }
                })
            if isVisible {
                Text("Tap me!")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


我在Big Sur上使用Xcode 12.5,我的iPhone运行的是iOS 14.5.1。

多亏了Erik Philips,以下是答案

import SwiftUI

struct ContentView: View {
    @State var isVisible = true
    var body: some View {
        ZStack {
            Rectangle()
                .zIndex(1)
                .foregroundColor(.blue)
                .gesture(TapGesture(count: 1).onEnded {
                    withAnimation(.easeInOut(duration: 1.0)) {
                        isVisible.toggle()
                    }
                })
            if isVisible {
                Text("Tap me!")
                    .zIndex(2)
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
看看这个: