我希望创建一个在SwiftUI中的视图,它可以动态地添加子视图并带有动画效果。
上述代码在动画方面运行良好。然而,当我将视图选择部分移入函数时,动画不再工作(因为我希望动态添加不同的视图,因此我将逻辑放在一个函数中)。
struct ContentView : View {
@State private var isButtonVisible = false
var body: some View {
VStack {
Toggle(isOn: $isButtonVisible.animation()) {
Text("add view button")
}
if isButtonVisible {
AnyView(DetailView())
.transition(.move(edge: .trailing))
.animation(Animation.linear(duration: 2))
}else{
AnyView(Text("test"))
}
}
}
}
上述代码在动画方面运行良好。然而,当我将视图选择部分移入函数时,动画不再工作(因为我希望动态添加不同的视图,因此我将逻辑放在一个函数中)。
struct ContentView : View {
@State private var isButtonVisible = false
var body: some View {
VStack {
Toggle(isOn: $isButtonVisible.animation()) {
Text("add view button")
}
subView().transition(.move(edge: .trailing))
.animation(Animation.linear(duration: 2))
}
func subView() -> some View {
if isButtonVisible {
return AnyView(DetailView())
}else{
return AnyView(Text("test"))
}
}
}
在我看来它们完全相同,但是我不明白为什么它们会有不同的结果。能否有人解释一下为什么?是否有更好的方案?非常感谢!