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

Different hide transition than show transition for a view

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

这里是修复

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