【发布时间】:2021-01-17 17:52:29
【问题描述】:
此代码列出了 100 行带有刷新图标动画的行。当使用LazyVStack 而不是VStack 时,向下滚动到此列表的底部后,所有动画都会停止,包括在您向后滚动时位于列表顶部的动画。 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))
})
}
}
【问题讨论】:
标签: swiftui vstack lazyvstack