这只是我遇到的基本问题的一个例子,所以不要担心这种情况听起来有点无意义;)
假设我有一个主要是UINavigationController的应用,只有两个级别。顶级是一个包含图像文件名列表的表,第二级只有一个UIImageView显示您点击的文件名的图像。
对于像这样的应用程序,有没有人知道一种好方法,允许顶层的表自动旋转,同时保持第二级图像在纵向模式下修复?
到目前为止,我已经能够到达那里了......但是当我在横向模式下点击文件名时,即使第二级视图控制器的shouldAutorotateToInterfaceOrientation仅返回yes,图像也会以错误的方向滑入视图模式。
答案 0 :(得分:3)
在iPhone OS 2.x中没有很好的方法可以做到这一点,但在3.0中,它们已经大大改进了它。
在2.x中,shouldAutorotateToInterfaceOrientation:
委托方法只针对方向的更改,因此您将获得您描述的行为:如果它在另一个视图控制器中旋转,即使新的视图控制器不支持旋转到该方向,它也会通过推送和弹出保持旋转状态。
在3.0中,UINavigationController在每次推送或弹出时轮询shouldAutorotateToInterfaceOrientation:
并按照您期望的方式遵循它返回的内容,例如:如果您当前在Landscape Left方向中旋转,并且您推送了一个实例视图控制器仅通过shouldAutorotateToInterfaceOrientation:
支持纵向方向,它会自动立即翻转逻辑方向,并在纵向方向上以正确的方式在新视图中滑动。
请注意,这仅适用于链接(因此需要)3.0的应用程序。对于与2.x链接的应用程序,它将模拟旧行为。
答案 1 :(得分:0)
问题在于,如果使用自动旋转,则会旋转整个UI(包括我认为的UIWindow实例)。
此时推送到导航控制器上的任何内容都将以横向方式完成。
因此,当您推送图像视图时,这正是您所获得的。
要使其发挥作用,您必须:
无论哪种方式,您都必须手动执行转换才能使其生效。
作为旁注,这可能是糟糕的UI设计。作为一个用户,我希望我向下钻取图像以显示正面。但这不知道你的应用程序的确切背景。