我刚刚在一个使用故事板的项目中添加了一个单独的视图控制器和xib。我使用通常的代码从另一个视图控制器中显示它:
OtherVC *othervc = [[OtherVC alloc] initWithNibName:nil bundle:nil];
[self.view addSubView: othervc.view];
在纵向方向上,xib显示并立即自动旋转。
但当我在iPad已经处于横向状态时显示它时,视图的大小是纵向的并且位于左侧。
发生了什么?似乎没有一种方法可以为视图添加约束。
谢谢!
答案 0 :(得分:0)
这不是展示单独viewController
的正确方法。
问题是您要在实际视图中添加视图。但此视图在视图中添加时会保持相同的某个框架 .. in两种情况(landscape
和protrait
)。因此,要理解,您应该检查方向,然后正确设置视图框架。但正如我所说,你使用的方式是错误的。
在你的情况下你应该使用 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来管理视图中的元素。