【问题标题】:SwiftUI - Animate text from the start after having displayed it onceSwiftUI - 显示一次后从一开始就为文本设置动画
【发布时间】:2020-09-05 16:24:18
【问题描述】:

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

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

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

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

有什么方法可以让文本再次完全重新出现,或者从一开始就重新激活它?

这是相关的代码位。

                Button(action: {

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

                }) {
                       Text("Button text")
                   }

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

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

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

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

    【讨论】:

    • 这个好像很完美,非常感谢,我试试这个!