我正在尝试使用SwiftUI构建动画。
Start: [ A ][ B ][ D ]
End: [ A ][ B ][ C ][ D ]
动画的关键元素包括:
- C 应该从 B 下方滑出(而不是从零宽度扩展)
- 所有视图的宽度都由子视图定义,并且未知
- 所有子视图的宽度在动画期间和之后不应更改(因此,最终状态下总视图宽度更大)
我的第一次尝试是使用具有 layoutPriorities 的 HStack 过渡。这与要求相差甚远,因为它会影响 C 在动画期间的宽度。
我的第二次尝试仍然使用了 HStack,但是使用了具有非对称移动动画的过渡。这已经非常接近了,但在动画期间 B 和 C 的移动并没有给人 C 直接位于 B 下方的效果。
我最新的尝试是放弃依赖于 HStack 用于两个动画视图,并改用 ZStack。使用这种设置,我可以通过组合偏移和填充来完美地进行动画。然而,请注意,只有在为 B 和 C 设置已知值的帧大小时才能得到正确的结果。
有没有人有任何想法可以实现这种效果,而不需要对 B 和 C 设置固定的帧大小?