视图的隐藏过渡与显示过渡不同

问题描述 投票:0回答:1

隐藏过渡时,与显示视图时,我得到的过渡类型不同,即使过渡应该相似(即,如果以滑入方式显示,则视图应以滑出方式隐藏)。该示例显示了.slide转换。当显示视图时,它会滑入。但是当我隐藏视图时,它会立即消失,但不会滑出。这是一个错误还是我做错了什么?使用Xcode 11.4.1

    @State var isPanelVisible = false

    var body : some View {
        ZStack {
            Color.gray
            VStack {
                Button(action: {
                    withAnimation {
                        self.isPanelVisible = true
                    }
                }) {
                    Text("SHOW")
                }
            }

            if isPanelVisible {
                VStack {
                    Button(action: {
                        withAnimation {
                            self.isPanelVisible = false
                        }
                    }) {
                        Text("HIDE")
                    }
                }
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .background(Color.white)
                .transition(.slide)
            }
        }
    }
animation swiftui transition
1个回答
0
投票

这里已解决

if isPanelVisible {
    VStack {
        Button(action: {
            withAnimation {
                self.isPanelVisible = false
            }
        }) {
            Text("HIDE")
        }
    }
    .frame(maxWidth: .infinity, maxHeight: .infinity)
    .background(Color.white)
    .zIndex(1)                   // << here !!
    .transition(.slide)
}
© www.soinside.com 2019 - 2024. All rights reserved.