我正在尝试使用 withAnimation
为文本中的值更改设置动画。但它似乎不起作用。我遇到过类似的问题,但 answer没有为文本值设置动画。
我正在尝试在纯 SwiftUI 中重新创建此行为
(UIKit Example):
我已经尝试过这段代码,但它不会为文本更改设置动画:
struct TextAnimationView: View {
@State private var textValue = "0"
var body: some View {
VStack (spacing: 50) {
Text(textValue)
.font(.largeTitle)
.frame(width: 200, height: 200)
.transition(.opacity)
Button("Next") {
withAnimation (.easeInOut(duration: 1)) {
self.textValue = "\(Int.random(in: 1...100))"
}
}
}
}
}
我对 SwiftUI 的经验很少,还有其他方法可以实现吗?提前致谢 :)
最佳答案
所以事实证明这真的很容易
Text(textValue)
.font(.largeTitle)
.frame(width: 200, height: 200)
.transition(.opacity)
.id("MyTitleComponent" + textValue)
注意额外的
id
在最后。 SwiftUI 在重绘时使用它来决定是否处理相同的 View 。如果 id 不同,则假定前一个 View 已被删除,而此 View 已被添加。因为它正在添加一个新 View ,所以它按预期应用了指定的转换。注意:这个 id 很可能对于整个 View 树应该是唯一的,因此您可能需要注意相应地为其命名空间(因此示例中的
MyTitleComponent
前缀)。
关于ios - 如何在 SwiftUI 中动画/过渡文本值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59157595/