将可交互视图放在 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),它在视觉上有效,但我无法通过点击按钮与它交互(我认为它在隐藏的导航栏后面。我已经尝试将 VStackzIndex 设置为 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)
    }
}