当 VStack 中存在单个非滚动项时,SwiftUI 不会折叠导航栏

Mr.*_*r.P 6 swift swiftui

当我滚动时,我遇到一个问题,导航栏不会折叠成一个小导航栏,只有当VStack.

下面的代码工作正常

var body: some View {
    NavigationView {
        VStack {
            ScrollView {
                LazyVStack {
                    ForEach(0..<100) { number in
                        Text("\(number)")
                    }
                }
            }
        }
        .navigationBarTitle("Home")
    }
}
Run Code Online (Sandbox Code Playgroud)

并运行如下:

在此输入图像描述

但是当我在顶层添加其他内容时VStack,导航栏不再折叠。所以这段代码:

var body: some View {
    NavigationView {
        VStack {
            SegmentedControl(selectedSegmentIndex: $currentTabIndex, segments: [.new, .new])
            ScrollView {
                LazyVStack {
                    ForEach(0..<100) { number in
                        Text("\(number)")
                    }
                }
            }
        }
        .navigationBarTitle("Home")
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

在此输入图像描述

有没有办法将滚动视图的偏移量与导航栏折叠联系起来?或者还有其他解决方法吗?

Asp*_*eri 4

崩溃是 的一种特殊行为NavigationView & ScrollView/List。所以如果你想要的话,把所有东西都放在里面ScrollView,比如

var body: some View {
    NavigationView {
        ScrollView {
            VStack {
                SegmentedControl(selectedSegmentIndex: $currentTabIndex, 
                    segments: [.new, .new])
                LazyVStack {
                    ForEach(0..<100) { number in
                        Text("\(number)")
                    }
                }
            }
        }
        .navigationBarTitle("Home")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 那么没有办法将段控件固定在顶部吗? (4认同)