如何修复应用于SwiftUI中文本的动画帧问题/错误?

如何修复应用于SwiftUI中文本的动画帧问题/错误?,swiftui,Swiftui,我想在文本视图上使用spring动画,但动画更改了此视图不必要的内容,这使得某些部分由于此问题/错误而被剪切。对于低调,我做了精确的文本视图,一个有背景色,另一个没有背景色!正如您所看到的,spring动画应该只使用视图的位置或偏移,而不是帧的大小也可能是因为位置相同时偏移量发生变化。我坚信这是一个错误。我可以制作比这更好的自定义spring动画,但我想知道有没有办法解决这个问题 PS:我发现所有关于文字的动画都有这个问题 SwiftUI中的修饰符受订单影响。因此,在所有其他修改器之后使用.an

我想在文本视图上使用spring动画,但动画更改了此视图不必要的内容,这使得某些部分由于此问题/错误而被剪切。对于低调,我做了精确的文本视图,一个有背景色,另一个没有背景色!正如您所看到的,spring动画应该只使用视图的位置或偏移,而不是帧的大小也可能是因为位置相同时偏移量发生变化。我坚信这是一个错误。我可以制作比这更好的自定义spring动画,但我想知道有没有办法解决这个问题

PS:我发现所有关于文字的动画都有这个问题


SwiftUI中的修饰符受订单影响。因此,在所有其他修改器之后使用.animation修改器意味着SwiftUI将尝试为所有修改器(可设置动画)设置动画,例如.padding修改器(确实可设置动画)

目前还不清楚预期的行为是什么,但是,通过应用上述解决方案,黄色背景大小保持不变,因为其填充未设置动画

正在修复使用时的填充更改。动画:


您可以看到,弹簧动画应该只使用视图的位置或偏移播放-这种假设是不正确的。隐式动画应用于所有可设置动画的特性。在考虑的情况下,是位置和大小(实际上是帧),它们从较小的RCT到较大的RCT(具有弹簧)是动画的。内容(即内部文本)不可设置动画。从你的帖子中还不清楚你到底想要实现什么。我的目标是文本不会被自己的框架剪切。谢谢,我的目标是在动画期间保存文本视图。
    struct ContentView: View {
    
    @State var stringForText: String = String()
    
    var body: some View {
        
        
        Button("add") { stringForText += "?"}.padding()
            
        Text(stringForText).font(.largeTitle).bold().padding().animation(.spring(response: 1, dampingFraction: 0.01, blendDuration: 1))
            
        Text(stringForText).font(.largeTitle).bold().background(Color.yellow).padding().animation(.spring(response: 1, dampingFraction: 0.01, blendDuration: 1))
        
    }
}