我有一个HStack,由如下子视图组成:
在这里,左右子视图是“第二天”子视图的灰色副本,但它们被设计为从屏幕上切除。我希望用户能够通过拖放“重新排序”这些子视图,但由于只有一个子视图是完全可见的,我希望动画显示这些子视图,使其在开始拖动手势时“垂直”排列。例如,如果用户开始拖动“第二天”子视图,我希望HStack中的所有子视图都能重新组织和动画化,使它们垂直对齐,如下所示:
我通过以下方法获得了相同的“结果”:
@State isDragging = false
if isDragging {
VStack {
// subviews here
}
} else {
HStack {
//subviews here
}
}
...
.onDrag(...) // set isDragging to true here with withAnimation
然而,由于我使用if/else的特性,我没有完成我所寻找的“涓滴”动画,或者任何动画。有人能给予我一些想法,我如何重组它来完成这种类型的动画吗?
1条答案
按热度按时间2mbi3lxu1#
我遇到了完全相同的问题,在搜索了很长时间后,我发现您可以将
AnyLayout()
与VStackLayout()
和HStackLayout()
结合使用:使用
AnyLayout()
,子视图不会被破坏,所以如果你用withAnimation()
来修改isDragging
变量,一切都会正常。