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