我正在制作一个简单的任务应用程序,并使用 ForEach 使用模型中的任务信息填充任务行。我需要一种方法来动画我的任务视图以打开并显示一些描述文本和两个按钮。我想在点击时从 A 变为 B,然后再点击返回:
我尝试过几件事。我在测试项目中成功获得了一个概念验证矩形动画,但存在问题。矩形从中心点收缩和增大,而不是仅从底部收缩和增大。当我将文本放入其中时,文本不会被隐藏,而且看起来非常糟糕。
struct ContentView: View {
@State var animate = false
var animation: Animation = .spring()
var body: some View {
VStack {
Rectangle()
.frame(width: 200, height: animate ? 60 : 300)
.foregroundColor(.blue)
.onTapGesture {
withAnimation(animation) {
animate.toggle()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的主应用程序中,我能够将第一个任务视图(关闭)替换为另一个打开的视图。这可行,但看起来很糟糕,而且并没有真正做到我想要的。它使用淡入淡出动画有效地将视图替换为另一个视图。
ForEach(taskArrayHigh) { task in
if animate == false {
TaskView(taskTitle: task.title, category: task.category?.rawValue ?? "", complete: task.complete?.rawValue ?? "", priorityColor: Color("HighPriority"), task: task, activeDate: activeDate)
.padding(.top, 10)
.padding(.horizontal)
.onTapGesture {
withAnimation(.easeIn) …Run Code Online (Sandbox Code Playgroud)