将可交互视图放在 NavigationView 前面隐藏导航栏
Placing interactable views in front of a NavigationView's hidden navigation bar
我有一个 NavigationView
里面有一个 NavigationButton
,但是我无法让 NavigationButton 位于屏幕顶部并且仍然可以按下,即使导航栏已隐藏。
此代码:
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationButton(destination: Text("Button Clicked")) {
Text("Hello World")
.background(Color.yellow)
}
Spacer()
}
}
.navigationBarHidden(true)
}
}
看起来像 , but I want it to look like 。
我尝试在 VStack
的顶部添加一个负填充(使用 .padding([.top], -95)
,它在视觉上有效,但我无法通过点击按钮与它交互(我认为它在隐藏的导航栏后面。我已经尝试将 VStack
的 zIndex
设置为 10000 来解决这个问题,但仍然没有用。有没有办法让我将按钮向上移动到顶部,同时仍然确保按钮在被点击时能够识别?
将此修改器添加到您的 NavigationView edgesIgnoringSafeArea(.top)
。
在隐藏导航栏之前添加一个navigationBarTitle
:
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationButton(destination: Text("Button Clicked")) {
Text("Hello World")
.background(Color.yellow)
}
Spacer()
}
.navigationBarTitle(Text("Title")) // Add this line
.navigationBarHidden(true)
}
}
我有一个 NavigationView
里面有一个 NavigationButton
,但是我无法让 NavigationButton 位于屏幕顶部并且仍然可以按下,即使导航栏已隐藏。
此代码:
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationButton(destination: Text("Button Clicked")) {
Text("Hello World")
.background(Color.yellow)
}
Spacer()
}
}
.navigationBarHidden(true)
}
}
看起来像
我尝试在 VStack
的顶部添加一个负填充(使用 .padding([.top], -95)
,它在视觉上有效,但我无法通过点击按钮与它交互(我认为它在隐藏的导航栏后面。我已经尝试将 VStack
的 zIndex
设置为 10000 来解决这个问题,但仍然没有用。有没有办法让我将按钮向上移动到顶部,同时仍然确保按钮在被点击时能够识别?
将此修改器添加到您的 NavigationView edgesIgnoringSafeArea(.top)
。
在隐藏导航栏之前添加一个navigationBarTitle
:
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationButton(destination: Text("Button Clicked")) {
Text("Hello World")
.background(Color.yellow)
}
Spacer()
}
.navigationBarTitle(Text("Title")) // Add this line
.navigationBarHidden(true)
}
}