导航栏隐藏时视图跳转

时间:2011-01-05 21:25:19

标签: iphone ipad uiview uinavigationcontroller uinavigationbar

在我们的应用程序中,当其中一个视图被推送到导航控制器时,导航栏可见5秒钟,然后我们将navigationBarHidden设置为TRUE。稍后,如果用户点击屏幕,我们切换navigationBarHidden值。但是当导航栏ID隐藏或可见时,视图会分别为这些操作上下跳动。

当隐藏或显示条形图时,有什么方法可以防止视图跳跃?

谢谢和问候, Hetal

4 个答案:

答案 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()