【问题标题】:Hide navigation bar on scroll in SwiftUI?在 SwiftUI 中滚动时隐藏导航栏?
【发布时间】:2021-02-11 15:00:38
【问题描述】:

Swift 支持在滚动时隐藏导航栏 navigationController?.hidesBarsOnSwipe = true

需要明确的是,我希望它只在滚动时隐藏,所以 .navigationBarHidden(true) 是不够的。

我尝试按照this Stackoverflow 答案(我添加了nc.hidesBarsOnSwipe = true)中的描述访问 NavigationController,但它在编译时不起作用。

SwiftUI 支持吗?

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    NavigationView 似乎仍然比较麻烦。例如,默认情况下,ScrollView 将忽略标题区域并在其下方滚动。

    在我看来,您可以通过同时使用 displayMode: .inlineStackNavigationViewStyle() 来完成这项工作。

    struct ContentView: View {
        var body: some View {
            NavigationView {
                ScrollView {
                    ForEach(0...20, id: \.self) { count in
                        (count % 2 == 0 ? Color.red : Color.blue)
                            .frame(height: 44.0)
                    }
                }
                .background(NavigationConfigurator { nc in // NavigationConfigurator is from the OP's post: https://stackoverflow.com/a/58427754/7834914
                    nc.hidesBarsOnSwipe = true
                })
                .navigationBarTitle("Hello World", displayMode: .inline)
            }
            .navigationViewStyle(StackNavigationViewStyle())
        }
    }
    

    滚动前:

    滚动后:

    【讨论】:

    • 迫不及待想试试这个。
    • 它不工作。还有其他解决办法吗?
    猜你喜欢
    • 2017-03-03
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多