[英]SwiftUI prevent animation when updating State
我有一个视图,它显示一个图像,当我滚动时,这个图像的不透明度、比例和偏移量会发生变化。
Image(...)
.resizable()
.opacity(artworkOpacity)
.scaleEffect(artworkScale)
.offset(artworkOffset)
这是在struct MyView: View {... }
中定义的。 在我设置的应用级别
MyView()
.animation(.default)
.transition(someTransition)
这很好用,除了更新这 3 个 state 变量(不透明度、比例和偏移)时,这些也是动画的! 在最后添加.animation(nil)
修复了这个问题,但是过渡中断,图像是唯一没有正确过渡的视图。
如何使 animation 仅在过渡期间发生,而不是在更新 state 时发生?
我尝试了在该视图中启用和禁用 animation 的各种组合以及withAnimation(nil) { // update State }
谢谢!
如果没有完整的代码,很难准确判断发生了什么,但您可以将 Animation 直接添加到转换中,而不是整个 object。
.transition(AnyTransition.move(edge: .bottom).animation(.easeInOut))
我想到了!
有.animation(..., value: ...)
,其中 animation 仅添加到视图中,如果值(这是一个等价的)已经改变。 因此整个视图不受 animation 的影响,除非定义当前视图的 state 发生变化并开始转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.