首页 > 解决方案 > SwiftUI - 显示一次后从一开始就为文本设置动画

问题描述

当按下按钮时,我已经动画了一个文本,其中显示了一个变量,并在显示时显示了“弹簧”动画。

如果变量发生变化,文本只会在显示的末尾发生变化。

问题是,正因为如此,当再次按下按钮时,“弹簧”动画只适用于文本的末尾。

我试过让按钮先清除文本然后重写它,但动画仍然只适用于改变的部分。

有没有办法让文本再次完全重新出现,或者从一开始就重新激活它?

这是相关的代码位。

                Button(action: {

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

                }) {
                       Text("Button text")
                   }

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

标签: iosswiftswiftui

解决方案


这是可能的方法 - 只需稍稍延迟清除和更新即可。

使用 Xcode 12 / iOS 14 准备和测试的演示

演示

    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())

推荐阅读