此代码列出了 100 行刷新图标动画。当使用 aLazyVStack
而不是 aVStack
时,在向下滚动到此列表的底部后,所有动画都会停止,包括在您向后滚动时位于列表顶部的动画。没有这样的问题VStack
。关于为什么会发生这种情况的任何想法以及是否有解决方法?使用 Xcode 12.0.1、iOS 14、Swift 5
struct RefreshingList : View {
@State var isAnimating = false
var body: some View {
ScrollView {
LazyVStack { // <- change to VStack to have animations not stop
ForEach(0..<100, id: \.self) { i in
HStack {
Text("\(i) -> ")
self.button()
}
}
}
}
.onAppear {
self.isAnimating=true
}
}
func button() -> some View {
Button(action: {}, label: {
Image(systemName: "arrow.2.circlepath")
.rotationEffect(Angle(degrees: self.isAnimating ? 360.0 : 0.0))
.animation(Animation.linear(duration: 2.0)
.repeatForever(autoreverses: false))
})
}
}