在我们的应用程序中,当其中一个视图被推送到导航控制器时,导航栏可见5秒钟,然后我们将navigationBarHidden设置为TRUE。稍后,如果用户点击屏幕,我们切换navigationBarHidden值。但是当导航栏ID隐藏或可见时,视图会分别为这些操作上下跳动。
当隐藏或显示条形图时,有什么方法可以防止视图跳跃?
谢谢和问候, Hetal
答案 0 :(得分:6)
我有同样的问题。在我的项目中,这是因为视图是滚动视图。如果您的视图是滚动视图或表格视图,您可以尝试:
我将以下代码添加到控制器中。
self.automaticallyAdjustsScrollViewInsets = NO;
希望它可以帮到你。
答案 1 :(得分:4)
您使用的是setNavigationBarHidden:
还是setNavigationBarHidden:animated:
?
尝试[navigationController setNavigationBarHidden:NO animated:YES];
。
如果问题是视图改变大小,那么你将不得不在视图中考虑到它,即它必须能够处理这两种尺寸。
答案 2 :(得分:1)
我意识到这是一个古老的对话,但我在iOS 11中遇到了一些以前正在使用的代码,这是我第一次在谷歌获得的结果。
在我的情况下,我有一个带导航控制器的视图控制器。该视图包含滚动视图。
如果滚动视图全部放大,滚动位置将在导航栏隐藏/显示动画后跳转。
设置self.automaticallyAdjustsScrollViewInsets = NO/false
不起作用(通过iOS 10完成的任务)。
经过多次摆弄后,我意识到UIScrollView中有一个名为contentInsetAdjustmentBehavior的新属性。
我必须将此设置为"从不"获得所需的效果(即显示/隐藏导航栏时滚动视图位置不会改变)。
在swift中它看起来像这样:
self.scrollView?.contentInsetAdjustmentBehavior = .never
答案 3 :(得分:0)
在SwiftUI中,使用hidden()方法,创建一个标题(甚至是一个空的标题)也很重要。如果使用NavigationLink,请对两个视图都应用方法,以免产生“跳动”效果。
.navigationBarTitle("")
.navigationBarHidden(true)
.labelsHidden()