【问题标题】:Placing interactable views in front of a NavigationView's hidden navigation bar在 NavigationView 前面放置可交互视图隐藏导航栏
【发布时间】: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 来解决这个问题,但它仍然没有用。有没有办法让我将按钮移到顶部同时仍然制作确定按钮在被点击时能够识别?

【问题讨论】:

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

标签: ios swift swiftui


【解决方案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 中的一个错误
猜你喜欢
  • 2015-11-14
  • 2014-10-15
  • 2012-07-07
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多