如何使用 SwiftUI 显示全栈模式?
How to display a fullstack modal with SwiftUI?
对于我的应用程序中的大部分导航,我有一个顶部导航栏和一个底部标签栏。我正在尝试显示全屏视图,在单击按钮时有效地删除所有导航。
当没有导航栏或标签栏时,关于 SO 的其他问题解决了这种情况,因此它们并没有真正回答我的用例。
这是我尝试过的:
单击时隐藏导航栏和标签栏:不适用于标签栏。如果我在关闭全屏视图时尝试返回到另一个视图,顶部导航就会出现错误。
使用模式:它可以工作,但不是全屏,这不符合我的要求。
在我用按钮切换的所有内容之上使用 ZStack:这不会隐藏标签栏。
是否有解决方案,或者我应该放弃并使用模态?
谢谢
这是一个可能的解决方案演示。
struct DemoModalOverTabView: View {
@State private var showModally = false
var body: some View {
ZStack {
TabView { // << main tab view
DemoTab
}.disabled(showModally) // << deactivate forcefully
if showModally {
DemoModal // << modal view
.zIndex(1) // << required !!
.transition(.move(edge: .bottom)).animation(.default)
}
}
}
var DemoTab: some View {
Button("Show") { self.showModally = true }
.tabItem { Image(systemName: "person") }
}
var DemoModal: some View {
Button("Hide") { self.showModally = false }
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.yellow)
.edgesIgnoringSafeArea(.all)
}
}
对于我的应用程序中的大部分导航,我有一个顶部导航栏和一个底部标签栏。我正在尝试显示全屏视图,在单击按钮时有效地删除所有导航。
当没有导航栏或标签栏时,关于 SO 的其他问题解决了这种情况,因此它们并没有真正回答我的用例。
这是我尝试过的:
单击时隐藏导航栏和标签栏:不适用于标签栏。如果我在关闭全屏视图时尝试返回到另一个视图,顶部导航就会出现错误。
使用模式:它可以工作,但不是全屏,这不符合我的要求。
在我用按钮切换的所有内容之上使用 ZStack:这不会隐藏标签栏。
是否有解决方案,或者我应该放弃并使用模态?
谢谢
这是一个可能的解决方案演示。
struct DemoModalOverTabView: View {
@State private var showModally = false
var body: some View {
ZStack {
TabView { // << main tab view
DemoTab
}.disabled(showModally) // << deactivate forcefully
if showModally {
DemoModal // << modal view
.zIndex(1) // << required !!
.transition(.move(edge: .bottom)).animation(.default)
}
}
}
var DemoTab: some View {
Button("Show") { self.showModally = true }
.tabItem { Image(systemName: "person") }
}
var DemoModal: some View {
Button("Hide") { self.showModally = false }
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.yellow)
.edgesIgnoringSafeArea(.all)
}
}