フェードイン/アウトアニメーションを使用して、SwiftUI で単純な「タップして UI の表示を切り替える」を実装しようとしています。次のコードは、期待どおりに Text 要素のフェードイン効果をアニメーション化しますが、isVisibleが false になるとすぐに Text 要素を非表示にします。
このコードが機能しない理由と、最も自然な方法で修正する方法を理解したいと思います。
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 を実行しています。