Возможно, но этот модификатор не анимируется, поэтому панель появляется мгновенно (то же самое наблюдается при переключении панели с кнопкой). В любом случае, я думаю, что это стоит опубликовать.
Протестировано с Xcode 12 / iOS 14
struct ContentView: View {
@State private var barHidden = true
var body: some View {
NavigationView {
ScrollView(showsIndicators: false) {
VStack {
ForEach(0 ..< 3) { _ in
Image(systemName: "rectangle.fill")
.resizable()
.aspectRatio(contentMode: .fill)
.padding()
}
}.background(GeometryReader {
Color.clear.preference(key: ViewOffsetKey.self,
value: -$0.frame(in: .named("scroll")).origin.y)
})
.onPreferenceChange(ViewOffsetKey.self) {
if !barHidden && $0 < 50 {
barHidden = true
print("<< hiding")
} else if barHidden && $0 > 50{
barHidden = false
print(">> показано ")}}} .coordinateSpace (name:" scroll ") .navigationBarTitle ("Заголовок здесь", displayMode: .inline) .navigationBarHidden (barHidden)} .animation (.default, value: barHidden) .edgesIgnoringSafeArea (.all)}} struct ViewOffsetKey: PreferenceKey {typealias Value = CGF10 * stati var defaultValue = CGFloat.zero stati c fun c reduce (value: inout Value, nextValue: () -> Value) {value + = nextValue ()}}