I am aiming to achieve a callback when an animation of offset change is finished. So, I found a workaround online which uses the AnimatableModifier to check when the animatableData equals the target value.
But it turns out AnimatableModifier is now deprecated. And I cannot find an alternative to it.
I am aware that GeometryEffect will work for this case of offset change, where you could use ProjectionTransform to do the trick. But I am more concerned about the official recommendation to "use Animatable directly".
Seriously, the only tutorial about the Animatable protocol I can find online is examples of using the Shape struct which implicitly implements the Animatable protocol.
And the following code I improvised with the Animatable protocol doesn't even do the "animating".
Thanks for your kind reading, and maybe oncoming answers!
That would really help to post the code also as text.
Replacing by
var body: some View {
RectView(value: offsetY)
.onAppear {
withAnimation(.easeInOut) { offsetY = 100 }
}
}
gives an animation effect.
You can also adjust speed:
withAnimation(.easeInOut.speed(0.1)) { offsetY = 100 }
I also removed .animation(nil)
var body: some View {
Rectangle()
.frame(width: 100, height: 100, alignment: .center)
.offset(y: value)
}