仅限历史答案。非常过时。
请注意,这个答案现在已经过时了/
这个答案只是历史上的好奇。
令人振奋的消息!正如下面 Andrew 所发现的,Apple 已在 4.0+ 中修复了此问题。
似乎不再需要在每个视图上强制视图的大小,并且景观“仅在第一次工作”的具体严重问题已经解决。
截至 2011 年 4 月,无法测试甚至构建低于 4.0 的任何东西,所以这个问题纯粹是历史上的好奇。这么长时间给开发者带来了多大的麻烦,真是不可思议!
这是最初的讨论和解决方案。现在这完全无关紧要,因为这些系统甚至无法运行。
要完全完成这项工作是极其困难的——至少存在三个问题/错误。
试试这个 ..interface builder landscape design
特别注意它说“并且你需要在任何地方正确使用 shouldAutorotateToInterfaceOrientation” 它意味着无处不在,你的所有全屏视图。
希望它对这场噩梦有所帮助!
这里要提醒大家注意另外一个众所周知的问题:如果您尝试在 MORE THAN ONE 视图(所有横向)之间切换, 它根本不起作用。记住这一点很重要,否则你会在这个问题上浪费几天的时间。这实际上是不可能的。这是 iOS 平台上最大的已知漏洞。从字面上看,没有办法让硬件使您加载的第二个视图成为风景。烦人但简单的解决方法,以及您必须做的,就是拥有一个微不足道的主 UIViewController,它只会坐在那里让您在视图之间切换。
也就是说,在 iOS 中因为一个重大的已知 bug:
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
您只能这样做一次。稍后,如果您尝试删除 happyThing.view,而是将 newThing.view 放在那里,它不起作用 - 就是这样。机器永远不会将视图旋转为横向。没有任何技巧可以修复,即使 Apple 也无法使其正常工作。您必须采用的解决方法是拥有一个整体 UIViewController,它只是坐在那里并只保存您的各种视图(happyThing、newThing 等)。希望对您有所帮助!