在我的应用程序中,
我有带根视图控制器的导航控制器。
显示/隐藏工作正常的导航栏。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
}
效果不错,
隐藏导航栏后,查看框架更改。
当导航栏未隐藏时,视图框会发生变化。
提前致谢...
编辑设置set self.view.frame没有任何效果。
答案 0 :(得分:11)
我有同样的问题。在我的项目中,这是因为视图是滚动视图。如果您的视图是滚动视图或表格视图,您可以尝试:
我将以下代码添加到控制器中。
self.automaticallyAdjustsScrollViewInsets = NO;
希望它可以帮到你。
答案 1 :(得分:3)
您无法更改self.view
的框架。我不使用setNavigationBarHidden:
隐藏导航栏,而是直接更改self.navigationController.navigationBar的框架。这样,self.view.frame
就不会改变。
CGRect frame = (navBarhidden) ? CGRectMake(0, -24,self.view.bounds.size.width,44) : CGRectMake(0, 20,self.view.bounds.size.width,44);
self.navigationController.navigationBar.frame = frame;
答案 2 :(得分:2)
我在显示UIView全屏时遇到了这个问题。调整框架对我有用。 (SWIFT)
隐藏navigationBar:
self.navigationController!.navigationBar.hidden = true
self.view.frame.origin.y -= 64
self.view.frame.size.height += 64.0
再次显示navigationBar:
self.navigationController!.navigationBar.hidden = false
self.view.frame.origin.y += 64
self.view.frame.size.height -= 64.0
答案 3 :(得分:0)
我认为这是默认功能,您无法更改,但您可以使用以下代码更改按钮的位置
myButton.frame = CGRectMake(X,Y,Height,Width);
隐藏导航栏后。
答案 4 :(得分:0)
我认为这可能会对你有所帮助
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
if(navbarhide)
self.view.frame=CGRectMake(0,0, 320, 480);
else
self.view.frame=CGRectMake(0,44, 320, 480);
}
答案 5 :(得分:0)
在显示和隐藏导航栏时更改self.view.frame
答案 6 :(得分:0)
scrollView.contentInsetAdjustmentBehavior = .never