在 SwiftUI 中,我有一个像这样的总体视图设置:
import SwiftUI
struct ContentView: View {
@State var index: Int = 0
var body: some View {
if self.index == 0{
FirstView(index: $index)
}
if self.index == 1 {
SecondView(index: $index)
.transition(.move(edge: .bottom))
.animation(.easeIn)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我在 FirstView 中有一个按钮,相当于:
Button(action: {
self.index = 1
}){
Text("Change view")
}
这工作正常,一切都很好,但我注意到,使用这种方法,任何以带有过渡动画的子视图中的 if/else 语句为条件的视图(即在这种情况下为 SecondView),也应用了这些动画。
因此,例如,如果 SecondView 如下所示:
struct SecondView: View {
@Binding var index: Int
@State var boolean: Bool = false
var body: some View {
VStack{
if self.boolean == true {
Text("Hello!")
}
Button(action: {
self.boolean = true
}){
Text("change boolean")
}
}
}
}
Text("Hello")
也会有过渡.transition(.move(edge: .bottom))
。
有什么方法可以防止这种情况/更好的方法来创建从一个视图到另一个视图的过渡动画?