1

在大多数情况下,我已经把事情弄清楚了。我似乎无法解决一个小问题。我将尽可能地概述这个问题,我认为此时提出我的问题不需要我发布任何代码,但请随时提问。

与大多数应用程序一样,我的应用程序默认为纵向查看。在主交互区域,当用户旋转设备时,我不必提供更改任何主要内容的代码,因为相反,我在视图堆栈顶部放置了一个新视图。这很好用,是用户可以在横向模式下与设备交互的两种方式之一。

第二个是模态显示的屏幕(来自这个主要交互区域),它使用 UIWebView 从应用程序内播放 YouTube 视频,这同样运作良好。

当用户在横向模式下关闭模态视图控制器时,就会出现问题。发生的情况是用户返回主交互区域,内容调整为横向模式,并且没有调用视图控制器通常为该主交互区域调用的委托方法,我使用此委托方法使横向更改正常:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { }

我将包括确切发生的情况的屏幕截图。

主要互动区域

纵向模式下主要交互区域的屏幕截图。

横向模式

横向模式下主要交互区域的屏幕截图。

从模式返回时的横向模式

在横向模式下关闭模态视图控制器并返回主交互区域后主交互区域的屏幕截图(注意内容已居中并已切断顶部并且没有拉伸(不是我要求它去做)

理想情况下,我想从横向模式返回主屏幕,让屏幕截图 2 成为用户看到的内容,而不是屏幕截图 3。

有什么建议么?同样,我很高兴发布代码。提前致谢。

编辑

回答:

如此简单,我采用了将景观视图放在视图堆栈顶部的代码,当它在它自己的方法中打开时。然后我在它之前休息的委托方法和 ViewWillAppear 中调用该方法。

4

1 回答 1

2

willRotateToInterfaceOrientation:如果视图控制器控制屏幕上的顶级视图,系统只会发送到视图控制器。由于您正在呈现模态视图控制器,因此模态视图控制器会得到willRotateToInterfaceOrientation:,而您的(隐藏的)视图控制器不会。

viewWillAppear:当视图控制器的视图即将重新出现时,系统将发送到视图控制器,因为模态视图控制器正在消失。所以你应该实施viewWillAppear:. 在该方法中,检查界面是否为横向。如果是,请显示您的横向视图。否则,隐藏您的横向视图。

于 2012-08-09T17:10:08.957 回答