SwiftUI:两个并排列表和一个导航视图出现意外行为

Mar*_*aka 5 ios swift swiftui

我有一个屏幕,两个List并排,在一个NavigationView. 布局渲染正确,我可以独立滚动两个列表。问题是,当我滚动第一个列表时,它位于导航栏后面,而没有触发对其应用背景颜色的效果。下面的 gif 展示了正在发生的事情:

在此输入图像描述

这是我用于此视图的代码:

struct ContentView: View {

    var body: some View {
        NavigationView {
            HStack(spacing: 0) {
                List {
                    Section(header: Text("Header left")) {
                        ForEach(0..<600) { integer in
                            Text("\(integer)")
                        }
                    }
                }
                .listStyle(InsetGroupedListStyle())
                .frame(minWidth: 0, maxWidth: .infinity)

                List {
                    Section(header: Text("Header right")) {
                        ForEach(0..<400) { integer in
                            Text("\(integer)")
                        }
                    }
                }
                .listStyle(InsetGroupedListStyle())
                .frame(minWidth: 0, maxWidth: .infinity)
            }
            .navigationTitle("Example")
        }
        .navigationViewStyle(StackNavigationViewStyle())
    }

}
Run Code Online (Sandbox Code Playgroud)

这会是 SwiftUI 的错误吗?如果没有,如何使第一个列表在滚动时与导航栏正确交互?

Vas*_*mov 0

我最终禁用了UINavigationBar大标题和透明度。

import Introspect

@State private var navigationBar: UINavigationBar?

HStack(spacing: 0) {
    ...
}
.navigationBarTitleDisplayMode(.inline)
.introspectNavigationController {
    $0.navigationBar.scrollEdgeAppearance = $0.navigationBar.standardAppearance
    navigationBar = $0.navigationBar
}
.onDisappear {
    navigationBar?.scrollEdgeAppearance = nil
    navigationBar = nil
}
Run Code Online (Sandbox Code Playgroud)

为了访问UINavigationController我使用了SwiftUI Introspect lib