0

我在 mei .xib 文件中创建了第二个 uiview。第一个视图是风景,我通过以下代码得到它

ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....

我怎样才能“激活”第二个视图,所以我可以使用它

newItem.view2...

那可能吗?第二个视图是肖像模式,所以它应该被隐藏,当转动 ipad 时,第一个视图应该被隐藏,第二个变得可见。

谢谢

4

2 回答 2

2

如果我正确理解您的问题,您可以使用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,并且您可能必须检查方向以将视图属性设置为最初的正确视图。

编辑:我的回答是假设您有两个具有不同布局/元素的视图,而不是两个视图对于不同方向的大小基本相同。如果是后者,则可能有更好的方法来仅使用一个视图来完成此操作。

于 2010-04-23T23:55:22.937 回答
1

当您有一些IBActions与单击按钮相关联或更改标签文本(在 xib 上)等时,您采用的方法将导致您遇到麻烦情况。最好的方法是在方向时更改框架高度宽度和位置变化。虽然这在开始时很困难,但它会让你免于很多麻烦。

如需帮助,请检查Rotate UIViewController 以抵消 UIInterfaceOrientation 中的更改

希望这可以帮助。

谢谢,

马杜普

于 2010-04-24T06:19:12.137 回答