在横向模式下隐藏NavigationView条,并在SwiftUI中延迟隐藏

时间:2020-02-15 04:57:12

标签: ios swiftui

我仍在学习SwiftUI,并且正在使用NavigationView,并且能够以纵向模式隐藏顶部导航栏,但是有两个问题。

1。)在横向模式下,仍然有一个顶部栏位于视图顶部。将其拉下会降低通知中心/设置

2。)在视图中点击按钮后,它将移至DetailView,但是短暂加载了顶部导航栏,然后将其隐藏。如何停止加载导航。

GIF of button to next view-从点击按钮到移动到下一视图再到切换为横向模式的流程

任何反馈或方法都值得赞赏。谢谢!

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: DetailView()) {
                    Text("Hello World")
                    .fontWeight(.bold)
                    .font(.title)
                    .padding()
                    .background(Color.blue)
                    .cornerRadius(40)
                    .foregroundColor(.blue)
                    .padding(10)
                    .overlay(
                        RoundedRectangle(cornerRadius: 40)
                    )
                }
                .navigationBarTitle("", displayMode: .inline)
                .navigationBarHidden(true)
                .navigationBarBackButtonHidden(true)
                //.edgesIgnoringSafeArea([.top, .bottom])
                //.navigationViewStyle(StackNavigationViewStyle())
                //.navigationViewStyle(DoubleColumnNavigationViewStyle())

            }
        }
        .navigationBarTitle("", displayMode: .inline)
        .navigationBarHidden(true)
        .navigationBarBackButtonHidden(true)
        //.statusBar(hidden: true)
    }
}

1 个答案:

答案 0 :(得分:2)

在消失之前,我还看到了在目标视图中短暂显示的导航栏。为了解决这个问题,我将导航栏属性添加到NavigationLink调用中的目标视图参数中。对于您的示例,它看起来像这样:

struct ContentView: View {
var body: some View {
    NavigationView {
        VStack {
            NavigationLink(destination: DetailView()
            .navigationBarTitle("", displayMode: .inline)
            .navigationBarHidden(true)
            .navigationBarBackButtonHidden(true)
            ) { // The rest of your code...