【发布时间】:2020-06-01 21:40:47
【问题描述】:
我正在尝试在 SwiftUI 中编排动画。我希望两个彩色条在它们之间有延迟移入视图,然后在切换延迟的情况下移出视图,以便删除与插入相反。
我想我明白为什么下面的代码不起作用,但我不知道如何让它做我需要的:
import SwiftUI
struct TestAnimControl: View {
@State var show: Bool = false
@State var reverseDelay: Bool = false
var body: some View {
VStack {
Button(action:{
self.show.toggle()
}) {
Text("Animate")
.font(.largeTitle)
}
if show {
Rectangle()
.foregroundColor(.blue)
.frame(height: 100)
.transition(.move(edge: .trailing))
.animation(Animation.spring().delay(show ? 0.3 : 0.5))
Rectangle()
.foregroundColor(.red)
.frame(height: 100)
.transition(.move(edge: .trailing))
.animation(Animation.spring().delay(show ? 0.5 : 0.3))
}
}
}
}
当你运行这个并点击按钮时,蓝条移入,然后红条移入。再次点击按钮,蓝条移出,然后红条移出。我想要的是当你点击删除按钮时,红色条移出,然后蓝色条移出,与条进入的方式相反。在这段代码中,我相信三元组不起作用,因为设置了动画当创建 Rectangle 并且之后延迟不能改变。我可能错了,但无论哪种方式都有办法做我想做的事吗?
【问题讨论】: