以不同方向更改视图

时间:2010-11-10 22:25:08

标签: iphone objective-c orientation uiinterfaceorientation

这是我的问题:我的应用程序有一个工具栏,您可以在其中更改视图。主要的一个或至少一个在启动时处于横向模式,然后如果你去任何其他视图是在纵向。当您尝试返回第一个(横向)时,问题出现,视图以纵向显示,因此所有视图都显示错误。 (这或多或少是清楚的吗?抱歉,如果看起来很乱)。我在这里有一些代码:

V1Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

V2Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(IBAction)goToV1 {
 V1Controller *v1 = [[V1Controller alloc] init];
 [self.view.superview addSubview:v1.view];
}

在添加视图之前,可能对对象v1执行某些操作?我不知道,需要你的帮助。

问题已解决 在视图转换中,我缺少一个句子,从superview中删除当前视图。也是@Brad所说的。谢谢。

-(IBAction)goToV1 {
     V1Controller *v1 = [[V1Controller alloc] init];
     [self.view.superview addSubview:v1.view];
     [self.view removeFromSuperview];
    }

1 个答案:

答案 0 :(得分:4)

当你说:

return (interfaceOrientation == UIInterfaceOrientationPortrait);

你允许它只旋转成肖像。

如果您要旋转为人像,然后将恢复为横向,只需返回“是”。

当你说

时,同样的逻辑适用
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);

你实际上在说:“让它以一种方式旋转 - 但从不以其他方式反复”