navigationBarHidden结合内嵌显示方式导致跳转
navigationBarHidden combined with inline display mode causes jump
我有一个父视图,其中我不想要任何导航栏,还有一个子视图,其中我想要一个内联导航栏。
如果我导航到子视图,然后再返回。列表顶部向上滚动时会有怪异的跳跃效果
我确定这是一个错误,但是有人有解决方法吗?如果有帮助,我可以访问底层 UIScrollView/UINavigationController 组件 - 但我不确定是否有任何属性会有所帮助。
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarHidden( true )
}
}
}
struct HelloView: View {
var body: some View {
Text("Hello")
.navigationBarTitle("Hello", displayMode: .inline)
}
}
我意识到这很奇怪,但这可以通过设置 navigationBarTitle
属性 来缓解。在您想要的情况下,我会推荐以下内容:
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarTitle("", displayMode: .inline) /// <<--- Insert this line
.navigationBarHidden( true )
}
}
}
通过将标题属性设置为空白并使用内联显示模式,它消除了大标题的视图,实际上正确隐藏了视图。
我有一个父视图,其中我不想要任何导航栏,还有一个子视图,其中我想要一个内联导航栏。
如果我导航到子视图,然后再返回。列表顶部向上滚动时会有怪异的跳跃效果
我确定这是一个错误,但是有人有解决方法吗?如果有帮助,我可以访问底层 UIScrollView/UINavigationController 组件 - 但我不确定是否有任何属性会有所帮助。
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarHidden( true )
}
}
}
struct HelloView: View {
var body: some View {
Text("Hello")
.navigationBarTitle("Hello", displayMode: .inline)
}
}
我意识到这很奇怪,但这可以通过设置 navigationBarTitle
属性 来缓解。在您想要的情况下,我会推荐以下内容:
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarTitle("", displayMode: .inline) /// <<--- Insert this line
.navigationBarHidden( true )
}
}
}
通过将标题属性设置为空白并使用内联显示模式,它消除了大标题的视图,实际上正确隐藏了视图。