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

时间:2020-08-21 16:05:13

标签: swift swiftui

滚动时导航栏出现问题,导航栏不会折叠到很小的地方,只有在VStack中有一个附加的“非滚动”项时才会发生。

以下代码可以正常工作

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

,其运行方式如下:

enter image description here

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

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

结果:

enter image description here

是否有办法将滚动视图的偏移量与导航栏折叠相关联?还是其他解决方法?

1 个答案:

答案 0 :(得分:0)

合拢是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")
    }
}