SwiftUI - как создать анимацию перехода между представлениями, не влияя на дочернее представление?

В 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()
    }
}

```swift
where I have a butotn in FirstView that is equivalent of:
```swift
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")
            }
        }
    }
}

текст ("Привет") также будет иметь .transition(.move(edge: .bottom)) переход.

Есть ли способ предотвратить это / лучший способ создать анимацию перехода от одного представления к другому?

0 ответов

Другие вопросы по тегам