1

这只是我遇到的基本问题的一个例子,所以如果这种情况听起来有点毫无意义,请不要担心;)

假设我有一个主要是 UINavigationController 的应用程序,只有两层深。顶层是一个包含图像文件名列表的表格,第二层只有一个 UIImageView 显示您点击的文件名的图像。

对于这样的应用程序,有没有人知道一种让顶层表格自动旋转同时保持第二层图像固定在纵向模式的好方法?

到目前为止,我几乎可以到达那里......但是当我在横向模式下点击文件名时,即使二级视图控制器的 shouldAutorotateToInterfaceOrientation 仅针对纵向模式返回 yes,图像也会以错误的方向滑入视图。

4

2 回答 2

3

在 iPhone OS 2.x 中没有很好的方法来做到这一点,但在 3.0 中,他们已经大大改进了它。

在 2.x 中,仅在更改shouldAutorotateToInterfaceOrientation:方向时才遵循委托方法,因此您会得到您所描述的行为:如果它在另一个视图控制器中旋转,即使新视图控制器也将通过推送和弹出保持旋转不支持旋转到那个方向。

在 3.0 中,UINavigationControllershouldAutorotateToInterfaceOrientation:会在每次推送或弹出时进行轮询,并遵循它返回您期望的方式,例如:如果您当前以横向左方向旋转,并且您推送仅支持纵向方向的视图控制器实例shouldAutorotateToInterfaceOrientation:,它会自动并立即翻转逻辑方向,并以纵​​向方向以正确的方式在新视图中滑动。

请注意,这仅适用于链接到(因此需要)3.0 的应用程序。对于链接到 2.x 的应用程序,它将模拟旧行为。

于 2009-06-19T01:04:18.410 回答
0

问题是,如果您使用自动旋转,整个 UI(包括我相信的 UIWindow 实例)都会被旋转。

此时推送到导航控制器上的任何内容都将在横向中完成。

因此,当您推送 imageview 时,这正是您所得到的。

要使其正常工作,您必须:

  1. 手动处理根视图的旋转(使用变换)
  2. 使用变换通过 -PI/2 取消旋转图像视图。

无论哪种方式,您都必须手动执行转换才能使其正常工作。

作为旁注,这可能是糟糕的 UI 设计。作为用户,我希望当我向下钻取图像时,图像会正面朝上。但这是在不知道您的应用程序的确切上下文的情况下进行的。

于 2009-06-18T05:57:13.460 回答