SwiftUI-显示一次后从头开始对文本进行动画处理

时间:2020-09-05 16:24:18

标签: ios swift swiftui

当按钮被按下时,我在其中显示变量的文本中设置了动画,并显示了“ Spring”动画。

如果变量更改,则文本只会在显示末尾更改。

问题在于,因此,当再次按下按钮时,“ Spring”动画仅适用于文本的结尾。

我试图使按钮先清除文本然后再重写,但动画仍然仅适用于发生变化的部分。

有什么方法可以使文本完全重新出现,或者从头开始重新设置其动画?

这是相关的代码位。

                Button(action: {

                    self.outputText = "This is my variable: \(variable)."

                }) {
                       Text("Button text")
                   }

                Text(outputText)
                    .animation(.spring())

1 个答案:

答案 0 :(得分:0)

这是可行的方法-只需清除并稍加延迟即可更新。

使用Xcode 12 / iOS 14准备并测试了演示

demo

    Button(action: {
        self.outputText = ""
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
            self.outputText = "This is my variable: \(variable)."
        }

    }) {
           Text("Button text")
       }

    Text(outputText)
        .animation(.spring())