0

我创建了一个二进制时钟并正在使用

willAnimateToInterfaceOrientation: duration: 

方法来放置纵向或横向的开/关按钮。我有两个选项卡,第一个是二进制时钟本身,第二个是如何读取时钟的说明。

这就是问题所在。iPad 的主屏幕自动从纵向切换到横向,因此我可以以任一方向启动我的应用程序。另一方面,iPhone 仅以纵向显示其主屏幕。这很好,但是当我启动我的应用程序时,按下任一选项卡按钮,然后更改方向,而屏幕(时钟或指令)更改方向,选择另一个选项卡按钮以先前方向显示该内容。在同一个视图(时钟或指令)中,方向更改可以完美执行,但是从一个视图切换到另一个视图时,在更改方向后,内容无法正确显示。

换句话说,假设我在 iPad 上以横向方式启动我的应用程序。默认情况下,显示二进制时钟视图。如果我更改为纵向,时钟会按预期变化。如果我当时保持 iPad 处于纵向模式,按下指令选项卡按钮,内容和 iAd 横幅(或有时只是 iAd 横幅)以横向显示。到目前为止,唯一的解决方案是将方向从当前设置更改为另一个设置,然后再返回,但这很难接受。

调用视图并正确显示内容时,我可以使用其他方法来检查方向吗?显然我所拥有的工作不正常。

4

1 回答 1

0

如果您根据方向在视图上动态移动事物,则必须在两个位置检查当前方向:

  1. willAnimate... 方法中,这没关系。当发生旋转并且主 VC 视图可见时调用此方法。

  2. viewWillAppear方法中!

如果在 VC 不可见时改变方向,willAnimate则不会调用 ... 方法。因此,在显示视图之前,您应该检查设备方向并正确设置视图/子视图。

只需使用[[UIDevice currentDevice] orientation];方法 inviewWillAppear检查当前方向并正确设置视图

于 2012-11-27T07:53:57.850 回答