我正在开发一个可以从任何其他屏幕唤起的底部菜单。该底部菜单将显示在半透明遮罩层的顶部,我希望该遮罩覆盖全屏幕,包括导航栏和选项卡栏等其他视图。
然而,我无法弄清楚如何使导航栏的内容显示在遮罩层后面。这是我的当前实现的演示。正如您所看到的,即使导航栏的内容在视觉上被显示在遮罩层后面,但仍然可以与其进行交互。
以下是我当前实现的简化代码:
import SwiftUI
struct MainNavigationView: View {
var body: some View {
NavigationView {
NavigationLink(destination: AnoterView()) {
Text("Navigate to the next screen")
}
}
}
}
struct AnoterView: View {
var body: some View {
ZStack {
Color(uiColor: .red)
.edgesIgnoringSafeArea(.all)
.navigationTitle("Test")
.navigationBarTitleDisplayMode(.inline)
ViewWithOverlay()
}
}
}
struct ViewWithOverlay: View {
var body: some View {
ZStack {
// I'd like this overlay to be rendered over the navigation bar
Color(uiColor: .blue)
.edgesIgnoringSafeArea(.all)
Color(uiColor: .green)
}
}
}
如您所见,尽管蓝色代表我的覆盖层已经画在了红色上方,但标题和返回按钮仍然显示在蓝色的上方。
我知道这是为什么,但我无法想到任何在SwiftUI中可以从任何视图调用的解决方法。
感谢任何帮助。