在 NavigationView 前面放置可交互视图隐藏导航栏

Posted

技术标签:

【中文标题】在 NavigationView 前面放置可交互视图隐藏导航栏【英文标题】:Placing interactable views in front of a NavigationView's hidden navigation bar 【发布时间】:2019-06-08 23:31:41 【问题描述】:

我有一个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),它在视觉上有效,但是我无法通过点击它与按钮进行交互(我认为它在隐藏导航栏)。我尝试将VStackzIndex 设置为10000 来解决这个问题,但它仍然没有用。有没有办法让我将按钮移到顶部同时仍然制作确定按钮在被点击时能够识别?

【问题讨论】:

图像没有为我加载,但我不确定这是否只是因为我正在旅行并且服务不好。如果有人看不到图片,请告诉我,我会在获得更好的服务后重试。 ^ 刚刚修复了图像 【参考方案1】:

在隐藏导航栏之前添加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)
    

【讨论】:

成功了!知道为什么吗?从表面上看似乎是一个错误,但是设置导航栏的标题是否可以解决我的问题? @RPatel99 是的,这可能是一个错误,但我认为没有标题的导航栏将无法正常运行,并且在某种程度上是不完整的......这可能就是它需要标题的原因。 在 Xcode beta 5 中不起作用(有或没有 navigationbarTitle @tusharsoni1205 尝试在 NavigationView 中移动 .navigationBarTitle【参考方案2】:

将此修饰符添加到您的 NavigationView edgesIgnoringSafeArea(.top)

【讨论】:

试过了,没用。我只是按下了凹槽下方的按钮(它实际上消失了,但我假设它在凹槽下方)。 这可行,但即使使用.top,它也会忽略底部安全区域。似乎是 beta 5 中的一个错误

以上是关于在 NavigationView 前面放置可交互视图隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章

当div可滚动时,div中的可拖动元素显示在放置区域的后面,需要它们显示在前面

NavigationView 中的 ListView 不滚动

UWP C# WINUI NavigationView 如何访问其他页面/视图

将 TabView 放在 NavigationView 中使标题透明

如何最小化 NavigationView 中的 SearchBar 与其上方的 Text 视图之间的空间?

刷新 NavigationView 环境对象