为什么我的UI元素的位置会在popViewController上发生变化?

时间:2012-02-15 05:04:40

标签: iphone xcode interface-builder

我最近开始使用界面构建器,我现在面临的问题是当我使用导航控制器的back按钮时,我的UI元素的y轴上升了大约20-30 px,是否存在一些设置我要用来避免这个问题?只有当我使用pushViewController时,它们才会上升,当我使用popViewController时,它会加载我需要的方式。

代码我用于推送:

    examVC=[[ExampleClass alloc] initWithNibName:@"ExampleClass" bundle:nil];
    [[self navigationController] pushViewController:examVC animated:YES];

我正在附上问题的图像。请注意标签如何下降约20-30 px。

为什么会这样?我做错了什么?

感谢所有帮助。

编辑:更改屏幕以获得更清晰

我正在圆形矩形按钮上使用推送代码。

屏幕1:我的IB中设置的UI元素

My UI elements in IB

屏幕2:从上一个视图推送时的外观 Pushed from previous

屏幕3:从“下一视图”

中弹出时的外观

Popped from the next

3 个答案:

答案 0 :(得分:2)

我的家庭视图控制器隐藏了导航栏,我发布的屏幕是主视图之后的第二个视图。我只想在第一个视图中隐藏导航栏,所以我使用了:

- (void)viewDidDisappear:(BOOL)animated
{
     [self.navigationController setNavigationBarHidden:NO animated:animated];
     [super viewDidDisappear:animated];
}

它导致了问题,因为我在viewDidDisappear中再次显示导航栏,因此视图将首先加载然后将显示导航栏,使其重叠。

所以我将相同的代码放在viewWillDisappear中,这样可以解决问题。导航栏在加载下一个视图之前已加载。现在视图加载就像我在界面构建器中设计它一样。

答案 1 :(得分:1)

嘿我不知道它是否适用于你或者不是在你的IB更改顶部栏NoneNavigation Bar
enter image description here


然后相应地调整您的元素并调整代码。

答案 2 :(得分:0)

我在这里尝试了所有的建议,但没有一个有效。弹出回原始视图控制器时,我的UI元素总是较低。解决这个问题的唯一方法就是在Interface Builder中进入我的nib文件并关闭Auto Layout。