xib中的UIView在横向打开时显示为纵向
问题描述:
我在整个使用故事板的项目中添加了单独的视图控制器和xib。我从平时的代码中的另一个视图控制器里面显示出来:xib中的UIView在横向打开时显示为纵向
OtherVC *othervc = [[OtherVC alloc] initWithNibName:nil bundle:nil];
[self.view addSubView: othervc.view];
在纵向,他XIB显示器和经销商的正常旋转开箱的。
但是,当我在iPad已经处于横向显示状态时显示它时,视图的大小是纵向并位于左侧。
发生了什么事?似乎没有办法向视图添加约束。
谢谢!
答
这是不正确的方式来提出一个单独的viewController
。
的问题是,您在实际view..but 添加视图这种观点有一定的框架,当你在这两种情况下增加它的观点 .. 将保持不变(landscape
和protrait
)。所以,要明白,你应该检查方向,然后正确设置视图的框架。但正如我所说,您使用的方式是错误的。
在你的情况你应该使用segue
从故事板。
或者,在最大,通过代码,但喜欢的东西:
OtherVC *othervc = [self.storyboard instantiateViewControllerWithIdentifier:@"Identifier"];
[self presentViewController:othervc animated:YES completion:nil];
其中Identifier
在您viewController
在正确的Inspector面板设置在故事板。
或者,如果你不是想说“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的普通遮罩规则来管理视图上的元素。
我认为你应该更新答案来使用xib文件以符合OP的当前情况。在处理实际事实(表明OP使用xib文件和故事板)之后,您可以提供多个“更好”的建议。 –
如果他正在使用故事板,他应该使用SEGUE。但我认为他正在使用一个单独的NIB而不是XIB。但无论如何,我建议正确的操作方式,同时也为他提出一个解决方案。但是,我再次鼓励以正确的方式改变方式并实施一切。 –
感谢您的回答。是的,我可以按照你的建议来做,但我添加的视图控制器有一个半透明的背景视图,如果我使用了segue或presentViewController,它们都会删除原来的背景视图,这不是我想要的。我的原始方式,通过透明视图显示背景,并且除了定位问题以外都可以正常工作。 – pizzafilms