私はボタンをタップして画面の中央にメッセージを表示/非表示にする本当にシンプルな遷移アニメーションを作成しようとしています:
_struct ContentView: View {
@State private var showMessage = false
var body: some View {
ZStack {
Color.yellow
VStack {
Spacer()
Button(action: {
withAnimation(.easeOut(duration: 3)) {
self.showMessage.toggle()
}
}) {
Text("SHOW MESSAGE")
}
}
if showMessage {
Text("HELLO WORLD!")
.transition(.opacity)
}
}
}
}
_
.transition(.opacity)
アニメーションのドキュメントによると
挿入時に透明から不透明に、削除時に不透明から透明に移行します。
showMessage
stateプロパティがtrueになるとメッセージがフェードインし、falseになるとメッセージがフェードアウトします。これは私の場合は当てはまりません。メッセージはフェードアニメーションで表示されますが、アニメーションなしで非表示になります。何か案は?
EDIT:シミュレータから取得した以下のgifの結果を参照してください。
これはキャンバスの問題だと思います。私は今朝トランジションをいじっていましたが、キャンバスでは機能しませんが、シミュレータでは機能しているようです。試してみてください。バグをAppleに報告しました。