【问题标题】:How to Handle iPad Rotation?如何处理 iPad 旋转?
【发布时间】:2026-02-18 13:35:01
【问题描述】:

我已经完成了一个 iPad 应用程序的核心,它相对简单。但是我想添加对纵向模式的支持(目前在横向模式下工作)。麻烦的是,它是一个非常定制的、独特的界面,由不同的 uiimages、labels 等组成

那么当用户旋转 iPad 时,我如何处理所有这些对象的移动呢?最好的方法是什么?

谢谢。

【问题讨论】:

    标签: objective-c ipad orientation rotation


    【解决方案1】:

    如果您在界面构建器中设计了界面,您可以通过界面构建​​器建立 GUI 元素之间的关系,并首先查看它对旋转的作用。这可能对你有用,我知道我设计的某些界面不是一个选项,而其他界面则可以正常工作。

    否则,您可能必须自己编写所有定位代码。根据我的经验,做到这一点的最佳方法可能是使用预处理器指令来定义两个方向中所有元素的位置。通过这种方式,您可以编写用于操作的例程,然后在第一次运行后可能需要进行的小调整可以只是预处理器指令文件中的数字调整。

    http://bynomial.com/blog/?p=85

    http://the.ichibod.com/kiji/how-to-handle-device-rotation-for-uiviews-in-ios/

    【讨论】:

    • 好酷。我应该在哪里处理位置/大小的变化?有没有一种神奇的方法可以说“我现在正在改变方向!”?
    • 您将需要实现一个 UIViewController(很明显,是的,它是一个 UIViewController 委托方法)。在我提供的答案中查看上面的内容,因为我已经用一些好的网站的链接对其进行了编辑。 :-)
    • 你有什么理由使用预处理器宏而不是常量?
    • 这是一个很好的问题,实际上在大多数情况下只是一个偏好。使用预处理器宏,基本上可以保证您的值将作为包含在指令中的值编译到二进制文件中,其中常量被编译到内存中的某个位置,在那里它们被分组为内存中代码的数据区域的一部分.这确实是编译器/链接器决定将值放入内存的地方。在某些情况下,使用宏而不是常量进行编译可能会放弃较小的二进制文件。