基本上我将全屏UIViewController推送到UINavigationController中,想要切换是否看起来像navigationBarHidden。
然而我发现在将navigationBarHidden设置为YES后,整个UIView将向下滑动44个像素以为navigationBar腾出空间。如何禁用此行为?因为我已经将barStyle设置为UIBarStyleBlackTranslucent并且实际上没有必要滑动。
//init viewController
[self.navigationController pushViewController:viewController animated:YES];
编辑:
我还在处理将scrollview推送到导航控制器。我发现将导航栏设置为可见之后。我的滚动视图将被推下一点,当我在该状态下手动滚动视图时,scrollView本身将再次向上滑动。我的问题是如何防止scrollView滑落。
在视图向下滑动或向上滑动之前,帧大小相同。
答案 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;
这可以是一个简单的解决方案