我在mei .xib文件中进行了第二次uiview。第一个视图是横向视图,我通过以下代码获取它
ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....
我怎样才能“激活”第二个视图,所以我可以将它与
一起使用newItem.view2...
可能吗?第二个视图是portait模式,因此它应该被隐藏,当转动ipad时,第一个视图应该被隐藏,第二个视图可见。
感谢
答案 0 :(得分:2)
如果我正确理解您的问题,您可以在UIViewController中使用方法willRotateToInterfaceOrientation:duration:
。
您可以使用IB声明两个UIView变量并设置它们的连接:
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:
设置为返回YES
,并且您可能必须先检查方向,以便将视图属性设置为正确的视图。
编辑:我的回答是假设您有两个具有不同布局/元素的视图,而不是两个视图,这些视图基本上是针对不同方向的大小相同的视图。如果是后者,可能只有一种观点可以采用更好的方法。
答案 1 :(得分:1)
当您有一些IBActions
与点击按钮相关联或更改标签文本(在xib上)时,您采取的方法会导致您遇到麻烦。
最佳方法是在方向改变时更改框架高度宽度和位置。虽然这在开始时很难,但它可以避免许多麻烦。
如需协助,请检查Rotate UIViewController to counteract changes in UIInterfaceOrientation
希望这有帮助。
谢谢,
Madhup