我在 mei .xib 文件中创建了第二个 uiview。第一个视图是风景,我通过以下代码得到它
ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....
我怎样才能“激活”第二个视图,所以我可以使用它
newItem.view2...
那可能吗?第二个视图是肖像模式,所以它应该被隐藏,当转动 ipad 时,第一个视图应该被隐藏,第二个变得可见。
谢谢
我在 mei .xib 文件中创建了第二个 uiview。第一个视图是风景,我通过以下代码得到它
ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....
我怎样才能“激活”第二个视图,所以我可以使用它
newItem.view2...
那可能吗?第二个视图是肖像模式,所以它应该被隐藏,当转动 ipad 时,第一个视图应该被隐藏,第二个变得可见。
谢谢
如果我正确理解您的问题,您可以使用willRotateToInterfaceOrientation:duration:
UIViewController 中的方法。
您可以声明两个 UIView 变量并使用 IB 设置它们的连接:
IBOutlet UIView *view1;
IBOutlet UIView *view2;
然后,willRotateToInterfaceOrientation:duration:
您可以交换视图。假设你的 ItemController 是 UIViewController 的子类,你可以有这样的东西:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[self setView:view1];
}
else {
[self setView:view2];
}
}
当用户旋转 iPad 时,这个方法会被自动调用。
注意:确保您设置shouldAutorotateToInterfaceOrientation:
为 return YES
,并且您可能必须检查方向以将视图属性设置为最初的正确视图。
编辑:我的回答是假设您有两个具有不同布局/元素的视图,而不是两个视图对于不同方向的大小基本相同。如果是后者,则可能有更好的方法来仅使用一个视图来完成此操作。
当您有一些IBActions
与单击按钮相关联或更改标签文本(在 xib 上)等时,您采用的方法将导致您遇到麻烦情况。最好的方法是在方向时更改框架高度宽度和位置变化。虽然这在开始时很困难,但它会让你免于很多麻烦。
如需帮助,请检查Rotate UIViewController 以抵消 UIInterfaceOrientation 中的更改
希望这可以帮助。
谢谢,
马杜普