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

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

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

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

有帮助吗?

解决方案

问题在于,如果使用自动旋转,则会旋转整个UI(包括我认为的UIWindow实例)。

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

因此,当您推送图像视图时,这正是您所获得的。

要使其发挥作用,您必须:

  1. 处理根视图的旋转 手动(使用转换)
  2. 通过-PI / 2取消旋转图像视图 使用转换。
  3. 无论哪种方式,您都必须手动执行转换才能使其生效。

    作为旁注,这可能是糟糕的UI设计。作为一个用户,我希望我向下钻取图像以显示正面。但这不知道你的应用程序的确切背景。

其他提示

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

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

在3.0中,UINavigationController在每个push或pop上轮询 shouldAutorotateToInterfaceOrientation:,并按照你期望的方式服从它返回的内容,例如:如果你当前在Landscape Left方向旋转,你推视图控制器的一个实例,仅通过 shouldAutorotateToInterfaceOrientation:支持纵向方向,它会自动并立即翻转逻辑方向,并在纵向方向上以正确的方式在新视图中滑动。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top