navigationBarHidden结合内嵌显示方式导致跳转

navigationBarHidden combined with inline display mode causes jump

我有一个父视图,其中我不想要任何导航栏,还有一个子视图,其中我想要一个内联导航栏。

如果我导航到子视图,然后再返回。列表顶部向上滚动时会有怪异的跳跃效果

我确定这是一个错误,但是有人有解决方法吗?如果有帮助,我可以访问底层 UIScrollView/UINavigationController 组件 - 但我不确定是否有任何属性会有所帮助。

struct ContentView: View {
    var body: some View {
        NavigationView {
            List( 0...50, id: \.self ) { i in
                NavigationLink(destination: HelloView()) {
                    Text("\(i)")
                }
            }
            .navigationBarHidden( true )
        }
    }
}

struct HelloView: View {
    var body: some View {
        Text("Hello")
            .navigationBarTitle("Hello", displayMode: .inline)
    }
}

我意识到这很奇怪,但这可以通过设置 navigationBarTitle 属性 来缓解。在您想要的情况下,我会推荐以下内容:

struct ContentView: View {
    var body: some View {
        NavigationView {
            List( 0...50, id: \.self ) { i in
                NavigationLink(destination: HelloView()) {
                    Text("\(i)")
                }
            }
            .navigationBarTitle("", displayMode: .inline) /// <<--- Insert this line
            .navigationBarHidden( true )
        }
    }
}

通过将标题属性设置为空白并使用内联显示模式,它消除了大标题的视图,实际上正确隐藏了视图。