web-dev-qa-db-ja.com

SwiftUIで遷移アニメーションが機能しない

私はボタンをタップして画面の中央にメッセージを表示/非表示にする本当にシンプルな遷移アニメーションを作成しようとしています:

_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の結果を参照してください。

enter image description here

16
superpuccio

これはキャンバスの問題だと思います。私は今朝トランジションをいじっていましたが、キャンバスでは機能しませんが、シミュレータでは機能しているようです。試してみてください。バグをAppleに報告しました。

0
テッド