繁体   English   中英

SwiftUI 在更新 State 时防止 animation

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM