2010-12-10 25 views
1

基本上,我将全屏UIViewController放到UINavigationController中,并且想切换navigationBarHidden是否显示。如何在navigationBarHidden设置为YES时防止UIView滑落一点

Howerever我发现,我将navigationBarHidden设置为YES后,整个UIView将向下滑动44像素,以便为navigationBar创建空间。如何禁用此行为?由于我已经将barStyle设置为UIBarStyleBlackTranslucent,并且滑动关闭实际上不是必需的。

//init viewController 
[self.navigationController pushViewController:viewController animated:YES]; 

编辑:

我还面临着推着滚动视图导航控制器。我发现,设置在导航栏后可见。当我在该状态下手动滚动视图时,我的滚动视图会稍微向下推,scrollView本身会再次滑动。我的问题是如何防止scrollView滑落。

在视图向下或向上滑动之前,帧大小是相同的。

回答

1

我解决了这个问题,将scrollView添加到UIView中,并将UIView设置为UIViewController的视图。

0

我认为这是UINavigationController的一个缺陷/功能,我不知道有任何方法来禁用它。它很烂。我一直不得不手动重新调整我的视图框架。这种方式比处理旋转,滚动视图时更加痛苦......

+0

可悲的是我也处理推动滚动视图到导航控制器..我发现将导航栏设置为可见之后。当我在该状态下手动滚动视图时,我的滚动视图会稍微向下推,scrollView本身会再次滑动。你有什么主意吗? – overboming 2010-12-11 05:45:09

1

尝试重置视图框架。做这样的事情,你定了吧隐藏后:

viewController.frame = self.navigationController.frame; 

你总是可以打破它那里看到什么值,甚至可能因此建立一个自定义框架,使之适合。我必须这样做...

+0

我可以在将导航按钮设置为隐藏后重置框架,但是如何防止视图滑动,因为导航按钮就像覆盖视图一样? – overboming 2010-12-11 05:25:37

0

添加在您的viewDidLoad方法如下:

self.wantsFullScreenLayout = YES;

它告诉视图控制器已经将导航栏下的子视图。

0

可能与contentInset有关。当设置navigationBarHidden属性时,如果当前视图控制器的根视图是滚动视图,则其contentInsets.top设置为顶部酒吧的高度。

为了防止这种情况发生,立即在更改navigationBarHidden的行之后,将self.scrollView.contentInset重置为您拥有的任何原始值。

0

这里没有任何答案适用于我。相反,你可以在viewDidLayoutSubviews()重置的UIScrollView的插图,如下图所示(斯威夫特):

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    // prevent the scrollview from adding some inset for the status bar 
    self.detailScroll.contentInset = UIEdgeInsetsZero 
} 
0

我已经试过了,这只能是这一举动的导航栏与它的起源y和更改的导航栏的子视图的alpha为0 。F;如果想要显示回来,只需执行反向操作

0

self.navigationController.navigationBar.alpha = 0.0;

这可以是一个简单的解决方案

相关问题