首页 > 解决方案 > 在 SwiftUI 中滑动列表时隐藏导航栏

问题描述

如何在 SwiftUI 中向上滑动时隐藏导航栏并在向下滑动时显示(例如在 facebook 上)?在 UKit 中有navigationBar.hideBarsOnSwipe,但我似乎在 SwiftUI 中找不到这样的功能。我是否遗漏了什么,或者在 swiftUI 中滑动时确实没有隐藏?

提前致谢!!

标签: iosswiftxcodeswiftui

解决方案


到目前为止,SwiftUI 中没有原生 API(1.0 和 2.0)。因此,这是基于此答案NavigationConfigurator中提供的可能的工作解决方案

使用 Xcode 12 / iOS 14 测试

演示

struct TestHideOnSwipe: View {

    var body: some View {
        NavigationView {
            List(0..<100) { i in
                Text("Item \(i)")
            }
            .background(NavigationConfigurator { navigationConfigurator in
                navigationConfigurator.hidesBarsOnSwipe = true     // << here !!
            })
            .navigationBarTitle(Text("Demo"), displayMode: .inline)
        }
    }
}

推荐阅读