ios - 横向模式下的 iPhone 应用程序,2008 系统

请注意,这个问题来自 2008 年,现在仅具有历史意义。


创建一个从一开始就以横向模式运行的 iPhone 应用程序的最佳方法是什么,无论设备的位置如何?

以编程方式和使用 Interface Builder。

最佳答案

仅限历史答案。非常过时。

请注意,这个答案现在已经过时了/

这个答案只是历史上的好奇


令人振奋的消息!正如下面 Andrew 所发现的,Apple 已在 4.0+ 中修复了此问题。

似乎不再需要在每个 View 上强制 View 的大小,并且景观“仅在第一次工作”的具体严重问题已经解决。

截至 2011 年 4 月,无法测试甚至构建低于 4.0 的任何东西,所以这个问题纯粹是历史上的好奇。这么长时间给开发者带来了多大的麻烦,真是不可思议!


这是最初的讨论和解决方案。现在这完全无关紧要,因为这些系统甚至无法运行。


要完全完成这项工作是极其困难的——至少存在三个问题/错误。

试试这个.. interface builder landscape design

特别注意它说“并且你需要在任何地方正确使用 shouldAutorotateToInterfaceOrientation” 它意味着无处不在,你的所有全屏 View 。

希望它对这场噩梦有所帮助!

这里要提醒一下手头的另一个众所周知的问题:如果您尝试在 MORE THAN ONE View (所有横向)之间切换, 它根本不起作用。记住这一点很重要,否则你会在这个问题上浪费几天的时间。这实际上是不可能的。这是 iOS 平台上最大的已知漏洞。从字面上看,没有办法让硬件使您加载的第二个 View 成为风景。烦人但简单的解决方法,你必须做的是,拥有一个微不足道的主 UIViewController,它什么也不做,只是坐在那里让你在 View 之间切换。

也就是说,在 iOS 中因为一个重大的已知 bug:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

您只能这样做一次。稍后,如果您尝试删除 happyThing.view,而是将 newThing.view 放在那里,它不起作用 - 就是这样。机器永远不会将 View 旋转为横向。没有任何技巧可以修复,即使 Apple 也无法使其正常工作。您必须采用的解决方法是拥有一个整体 UIViewController,它只是坐在那里并只保存您的各种 View (happyThing、newThing 等)。希望对您有所帮助!

https://stackoverflow.com/questions/402/

相关文章:

objective-c - NSAutoreleasePool 自动释放池是如何工作的?

iphone - 是否有记录的方法来设置 iPhone 方向?

objective-c - 从 NSString 中删除字符?

ios - UIFont - 如何获取系统细字体

objective-c - 容器 View Controller 示例

ios - TabBar 图像的大小应该是多少?

objective-c - 使用 NSPredicate 根据 NSDictionary 键过滤 N

ios - 比较两个 CGRect

objective-c - 如何获取 Root View Controller ?

iphone - "wait_fences: failed to receive reply: 10