两个视图之间的swiftui转换

Posted

技术标签:

【中文标题】两个视图之间的swiftui转换【英文标题】:swiftui transition between two view 【发布时间】:2021-12-28 20:02:21 【问题描述】:

我正在实现登录视图和主页视图这两个视图之间的转换,因此当我按下登录按钮时,var vm.currentUserSignedIn(保存在视图模型中的应用程序存储中)变为 true,我希望创建一个在登录视图离开时转换,但我不明白为什么我看不到它。

这里是代码

struct LoginView: View 
    @State private var emailTextField: String = ""
    @State private var passwordTextField: String = ""
    @StateObject var vm: LoginViewModel = LoginViewModel()
    
    var body: some View 
        ZStack 
            ZStack
                NavigationView
                    HomeView(vmLogin: vm)
                
                
                ZStack
                    if !vm.currentUserSignedIn 
                        loginView
                        .transition(.move(edge: .leading))
                    
                    
                    if vm.isLoading 
                        Loading()
                    
                
                .zIndex(2.0)

            
        
    


谢谢

【问题讨论】:

欢迎来到 Stack Overflow!请使用tour 并查看:How do I ask a good question? 和How to create a Minimal, Reproducible Example。 【参考方案1】:

尝试动画,比如

    ZStack
        if !vm.currentUserSignedIn 
            loginView
            .transition(.move(edge: .leading))
        
        
        if vm.isLoading 
            Loading()
        
    
    .zIndex(2.0)
    .animation(.default, value: vm.currentUserSignedIn)  // << here !!

【讨论】:

是的!!!谢谢你,它工作得很好。

以上是关于两个视图之间的swiftui转换的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:在列表中的两个视图之间画一条线/如何确定视图的中心位置?

SwiftUI 视图之间的导航

导航时如何在 SwiftUI 中使用自定义视图转换?

SwiftUI:动画过渡

SwiftUI:如何使用延迟在两个图像之间设置动画过渡?

为 Swiftui 视图转换 @State 的计算属性