当navigationBarHidden设置为YES时,如何防止UIView向下滑动一点

时间:2010-12-10 17:29:37

标签: iphone cocoa-touch uinavigationcontroller

基本上我将全屏UIViewController推送到UINavigationController中,想要切换是否看起来像navigationBarHidden。

然而我发现在将navigationBarHidden设置为YES后,整个UIView将向下滑动44个像素以为navigationBar腾出空间。如何禁用此行为?因为我已经将barStyle设置为UIBarStyleBlackTranslucent并且实际上没有必要滑动。

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

编辑:

我还在处理将scrollview推送到导航控制器。我发现将导航栏设置为可见之后。我的滚动视图将被推下一点,当我在该状态下手动滚动视图时,scrollView本身将再次向上滑动。我的问题是如何防止scrollView滑落。

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

8 个答案:

答案 0 :(得分:1)

尝试重置视图框。将栏设置为隐藏后执行类似的操作:

viewController.frame  = self.navigationController.frame;

您可以随时将其分解并查看值,甚至可以相应地构建自定义框架以使其适合。我之前必须这样做......

答案 1 :(得分:1)

我通过将scrollView添加到UIView并将UIView设置为UIViewController的视图来解决这个问题。

答案 2 :(得分:0)

我认为这是UINavigationController的错误/功能,我不知道有任何方法可以禁用它。太糟糕了。我总是不得不手动调整我的视图框架。在处理旋转,滚动视图时,这更令人痛苦......

答案 3 :(得分:0)

在viewDidLoad方法中添加以下内容:

self.wantsFullScreenLayout = YES;

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

这里的答案都不适用于我。相反,您可以在UIScrollView期间重置viewDidLayoutSubviews()上的插图,如下所示(在Swift中):

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

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

答案 6 :(得分:0)

我试过了,只有移动navigationBar及其原点y,并将navigationBar的子视图的alpha改为0.f;如果想要显示回来,只需反向

答案 7 :(得分:0)

self.navigationController.navigationBar.alpha = 0.0;

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