在横向打开时,xib中的UIView显示为纵向

时间:2014-05-20 16:17:59

标签: ios ipad uiview uiviewcontroller autolayout

我刚刚在一个使用故事板的项目中添加了一个单独的视图控制器和xib。我使用通常的代码从另一个视图控制器中显示它:

OtherVC *othervc = [[OtherVC alloc] initWithNibName:nil bundle:nil];
[self.view addSubView: othervc.view];

在纵向方向上,xib显示并立即自动旋转。

但当我在iPad已经处于横向状态时显示它时,视图的大小是纵向的并且位于左侧。

发生了什么?似乎没有一种方法可以为视图添加约束。

谢谢!

1 个答案:

答案 0 :(得分:0)

这不是展示单独viewController的正确方法。

问题是您要在实际视图中添加视图。但此视图在视图中添加时会保持相同的某个框架 .. in两种情况landscapeprotrait)。因此,要理解,您应该检查方向,然后正确设置视图框架。但正如我所说,你使用的方式是错误的。

在你的情况下你应该使用 storyboard 中的segue

或者,最多,通过代码,但有类似的东西:

OtherVC *othervc = [self.storyboard instantiateViewControllerWithIdentifier:@"Identifier"];
[self presentViewController:othervc animated:YES completion:nil];

右侧的检查员面板在故事板中的Identifier中设置了viewController

或者,如果您想说“ NIB ”,您应该这样做:

OtherVC *othervc = [[OtherVC alloc] initWithNibName:@"yourNibName" bundle:[NSBundle mainBundle]]; //Or your correct bundle but i guess will be this.
[self presentViewController:othervc animated:YES completion:nil];

在此之后,如果您确定在项目中设置了两个方向,那么您的视图将处于横向状态。

现在,您将使用AutoLayout或普通掩码规则而不使用AutoLayout来管理视图中的元素。