问题描述
在 Swift 中使用 navigationController?.hidesBarsOnSwipe = true 支持在滚动时隐藏导航栏
明确地说,我希望它只在滚动时隐藏,所以 .navigationBarHidden(true)
是不够的.
我尝试按照
滚动后:
Hiding the navigation bar on scroll was supported in Swift with navigationController?.hidesBarsOnSwipe = true
To be clear, I'd like it to only be hidden on scroll, so .navigationBarHidden(true)
would not suffice.
I tried accessing the NavigationController as described in this Stackoverflow answer, (I added nc.hidesBarsOnSwipe = true
) and while it compiled, it did not work.
Is this supported in SwiftUI?
NavigationView
seems to be relatively buggy still. For example, by default a ScrollView
will ignore the title area and just scroll beneath it.
It looks to me like you can get this working by using displayMode: .inline
and StackNavigationViewStyle()
together.
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())
}
}
Before Scroll:
After Scroll:
这篇关于在 SwiftUI 中滚动时隐藏导航栏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!