我试图为文本制作淡入淡出的动画,但是当我尝试以这种方式这样做时,它是行不通的。没有不透明度的平滑增加和减少,它只是跳跃到完全并且没有不透明度。

struct Test: View {
    @State var showing = false

    var body: some View {
        VStack {
            Button("Toggle") {
                self.showing.toggle()
            }

            if showing {
                Text("Hello")
                    .transition(.opacity)
                    .animation(.easeInOut)
            }
        }
    }
}
有谁知道为什么这不能按预期工作?我期望在将文本插入到视图层次结构并将其从视图层次结构中删除时,它具有平滑的淡入淡出过渡效果。

最佳答案

showingfalse时,没有人可以进行动画处理。而是使用以下命令:

VStack {
    if showing {
        Text("Hello")
            .transition(.opacity)
    }
}.animation(.easeInOut)   // << here !!

10-08 08:05