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

时间:2020-05-12 23:04:13

标签: animation swiftui transition

隐藏视图时,与显示视图时,我会得到不同类型的过渡,即使过渡应该相似(即,如果以滑入方式显示,则视图应以滑出方式隐藏)。该示例显示了.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)
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

这是固定的

if isPanelVisible {
    VStack {
        Button(action: {
            withAnimation {
                self.isPanelVisible = false
            }
        }) {
            Text("HIDE")
        }
    }
    .frame(maxWidth: .infinity, maxHeight: .infinity)
    .background(Color.white)
    .zIndex(1)                   // << here !!
    .transition(.slide)
}