从一个视图控制器移动到另一个视图控制器时如何检查设备方向?

时间:2013-02-07 10:03:37

标签: ios objective-c uiviewcontroller

假设我在处于横向模式的viewcontroller中。当我推新的viewcontroller如何检查以前的viewcontroller方向并更改此视图的方向?

请帮助。

谢谢。

2 个答案:

答案 0 :(得分:3)

必须以自动方式完成。在每个视图控制器中,您必须定义此方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

您可以在其中设置控制器的方向。

在iOS 5或更早版本中UIViewController默认只处理纵向方向 要处理其他可能的方向,您必须在视图控制器中实现此方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

    return YES;
}

您可能还想定义处理轮换的方法:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

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

或者以自动方式进行。

您可以阅读更多here.

  

处理视图轮播

     

在iOS 6中,您的应用支持在您的应用中定义的界面方向   app的Info.plist文件。视图控制器可以覆盖   supportedInterfaceOrientations方法限制支持的列表   取向。通常,系统仅在根上调用此方法   视图控制器的窗口或视图控制器呈现填充   整个屏幕;子视图控制器使用的部分   由父视图控制器为它们提供的窗口不再   直接参与有关轮换的决定   支持的。应用程序的方向掩码和视图的交集   控制器的方向掩码用于确定哪些方向   视图控制器可以旋转到。

     

您可以覆盖preferredInterfaceOrientationForPresentation   一个视图控制器,旨在全屏显示   具体方向。

     

在iOS 5及更早版本中,UIViewController类在其中显示视图   仅限肖像模式。要支持其他方向,您必须这样做   覆盖shouldAutorotateToInterfaceOrientation:方法并返回   对于您的子类支持的任何方向都是YES。如果自动调整   视图的属性配置正确,可能就是全部   得做。但是,UIViewController类提供了额外的功能   您可以根据需要实现其他行为。通常,   如果您的视图控制器旨在用作子视图   控制器,它应该支持所有的接口方向。

     

当可见视图控制器发生旋转时,   willRotateToInterfaceOrientation:时间:,   willAnimateRotationToInterfaceOrientation:duration:,和   didRotateFromInterfaceOrientation:在调用期间调用方法   回转。 viewWillLayoutSubviews方法也在调用之后调用   视图由其父级调整大小和位置。如果是视图控制器   当方向发生变化时不可见,然后是旋转   永远不会调用方法。但是,viewWillLayoutSubviews方法   在视图变得可见时调用。你执行这个   方法可以调用statusBarOrientation方法来确定   设备方向。

     

注意:在发布时,应用应始终在其中设置其界面   纵向。之后   application:didFinishLaunchingWithOptions:方法返回,app   使用上述视图控制器旋转机制进行旋转   在显示窗口之前,视图到适当的方向。

答案 1 :(得分:0)

根据您的问题,您是否可以解释您的要求以及您希望更详细地解释这些问题的原因并不是很清楚。

根据我的理解,您可以检查新视图控制器中设备的当前方向,该方向将是上一视图中设备的先前方位。

此致 Rahul Dubey