I have view hierarchy like this:
NavigationView {
VStack {
ScrollView {
// some content
}
.background(NavigationLink(destination:
MyView(),
isActive: $isActive) {
EmptyView()
})
// snipped
}
}
When the user follows the navigation link to MyView
, by default NavigationBar
and MyView
is laid out like in a VStack
. How can I make them like in a ZStack(alignment: .topLeading)
? i.e. I like MyView
extends beneath the NavigationBar
.
Here is the MyView
:
GeometryReader { geo in
HStack {
// some content
}
.onAppear {
hideNavigationbar = false
}
.onTapGesture(perform: {
hideNavigationbar.toggle()
})
.navigationBarHidden(hideNavigationbar)
.navigationBarTitleDisplayMode(.inline)
// snipped
}
The problem is, when hideNavigationbar
toggles, MyView
would shift up and down because its height would change. I want NavigationBar
sits on top of MyView
like in a ZStack
so that when NavigationBar
hides, MyView
will not shift (only uncover its top portion).
What is the proper way to achieve that?
XCode: 15.3 using SwiftUI
iOS: 15