簡體   English   中英

如何在 SwiftUI 中為具有幻燈片效果的子視圖之間的過渡設置動畫?

[英]How to animate transitions between child views with slide effect in SwiftUI?

我想使用幻燈片效果為子視圖之間的過渡設置動畫,但我這樣做的方式不起作用。 怎么做才對?

ContentView.swift:

struct ContentView: View {
    @EnvironmentObject var session: SessionStore
    
    var body: some View {
        Group {
            if(self.session.session != nil && (Auth.auth().currentUser?.isEmailVerified)!){
                VStack{
                Text("Welcome to the app")
                Button(action: {session.signOut()}){
                    Text("Sign Out")
                }
                }.transition(.move(edge: .trailing))
                //also I tried .transition(.slide))
            }
            
            if(self.session.session != nil && !(Auth.auth().currentUser?.isEmailVerified)!){
                EmailVerificationView()
                    .transition(.move(edge: .trailing))
            }
            
            if(self.session.session == nil){
                SignInView()
                    .transition(.move(edge: .trailing))
            }
        }.onAppear(perform: {
            session.listen()
        })  
    }
}

為此,您需要可動畫的容器。 嘗試使用ZStack而不是Group

var body: some View {
    ZStack {
        if(self.session.session != nil && (Auth.auth().currentUser?.isEmailVerified)!){
            VStack{
            Text("Welcome to the app")
            Button(action: {session.signOut()}){
                Text("Sign Out")
            }
            }.transition(.move(edge: .trailing))
            //also I tried .transition(.slide))
        }
        
        if(self.session.session != nil && !(Auth.auth().currentUser?.isEmailVerified)!){
            EmailVerificationView()
                .transition(.move(edge: .trailing))
        }
        
        if(self.session.session == nil){
            SignInView()
                .transition(.move(edge: .trailing))
        }
    }
    .animation(.default)
    .onAppear(perform: {
        session.listen()
    })  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM