如何在SwiftUI中禁用位置动画?

问题描述

我想以编程方式滚动git pull --all,并且可以独立地对某些子视图进行动画处理,但是当更改vstack的偏移量时,动画子视图会随着动画而移动到最终位置,这不是我想要什么以及如何禁用对此位置动画设置动画? 这是我的演示代码

vstack

效果

enter image description here

解决方法

尝试以下方法(在Xcode 12.0.1,iOS14中测试):

设置angle时使用显式动画调用:

import SwiftUI

struct ContentView: View {
    @State var angle:Double = 0
    @State var offset = 0
    var body: some View {
        LazyVStack {
            ForEach((0..<100)) { i in
                if i == 25 {
                    Rectangle()
                        .frame(width: 30,height: 30)
                        .rotationEffect(.degrees(angle),anchor: .center)
                        .onAppear {
                            withAnimation(Animation.linear(duration: 3).repeatForever(autoreverses: false)) {
                                angle = 360
                            }
                        }
                } else {
                    Text("number \(i)")
                }
            }
        }
        .offset(y: CGFloat(offset))
        .onAppear {
            offset = 200
        }
        
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...