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