6

在我的应用程序中,在隐藏/显示导航栏上查看框架更改?

我有导航控制器与根视图控制器。

显示/隐藏工作正常的导航栏。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    BOOL navbarhide=[self.navigationController.navigationBar isHidden]; 
    [self.navigationController setNavigationBarHidden:!navbarhide animated:YES]; 


} 

工作良好,但

当导航栏被隐藏然后查看帧变化。

当导航栏未隐藏时,则查看框架更改。

When navigation bar is not hidden ..see the press button and view's origin is below the bar, I dont want like this I want it to stick at navigation bar's origin[at the top of the page]

It is fine view is at its original position when bar is hidden. I want view to be stick at this position and turn bar hide/show without changing the view's frame.

在此先感谢...

编辑设置中设置self.view.frame不作任何效果。

回答

10

我有同样的问题。在我的项目中,这是因为视图是滚动视图。如果你的视图是滚动视图或表格视图,你可以试试这个:

我将下面的代码添加到控制器。

self.automaticallyAdjustsScrollViewInsets = NO; 

希望它能帮助你。

0

我认为这是由不能被你改变默认的功能,但是通过使用以下代码

myButton.frame = CGRectMake(X,Y,高度,宽度)来改变按钮的位置;

隐藏导航栏后。

+0

其实这是测试代码我要实现它向我的应用程序......如果你能得到.. –

+0

当你点击按钮,然后更改myButton的值。 更改值并尝试此操作。 我想你会得到你的解决方案。 –

+0

是的,我可以移动按钮,但在我的真实应用程序中,我有很多组件,所以移动组件很麻烦!!! 1 –

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); 
} 
+0

没有影响...相同的行为... –

+0

这不起作用,因为在设置框架后导航开始隐藏。并删除你所做的。 – hasan83

0

变化,当你在显示和隐藏导航栏

3

你不能改变的self.view框架的self.view.frame。我不使用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; 
+0

但是在旧的地方留下了黑色的空间。 – hasan83

+0

我试过这个,但它给了我太多的错误 – Jasper

2

我在全屏显示UIView时遇到了这个问题。调整框架为我工作。 (SWIFT)

隐藏的导航栏:

self.navigationController!.navigationBar.hidden = true 
    self.view.frame.origin.y -= 64 
    self.view.frame.size.height += 64.0 

再次显示的导航栏:

self.navigationController!.navigationBar.hidden = false 
    self.view.frame.origin.y += 64 
    self.view.frame.size.height -= 64.0