这是我的问题:我的应用程序有一个工具栏,您可以在其中更改视图。主要的一个或至少一个在启动时处于横向模式,然后如果你去任何其他视图是在纵向。当您尝试返回第一个(横向)时,问题出现,视图以纵向显示,因此所有视图都显示错误。 (这或多或少是清楚的吗?抱歉,如果看起来很乱)。我在这里有一些代码:
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];
}
答案 0 :(得分:4)
当你说:
return (interfaceOrientation == UIInterfaceOrientationPortrait);
你允许它只旋转成肖像。
如果您要旋转为人像,然后将恢复为横向,只需返回“是”。
当你说
时,同样的逻辑适用return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
你实际上在说:“让它以一种方式旋转 - 但从不以其他方式反复”