在不同的viewControllers中,纵向到横向,反之亦然

时间:2012-10-15 16:03:09

标签: objective-c

如何在具有标签栏控制器和导航控制器的应用程序的不同viewControllers中执行纵向横向和反向横向...

我做了

- (void)viewWillAppear:(BOOL)animated
{
  [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

 }

当我想在视图中使用OrientationLandscapeRight时

- (void)viewWillAppear:(BOOL)animated
{
   [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];

}

当我想要肖像..

它工作但导航栏没有根据方向进行调整。

2 个答案:

答案 0 :(得分:0)

尝试使用..

 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];

答案 1 :(得分:0)

您不应该调用此方法,因为它是私有的,Apple会拒绝您的应用,您将无法发布它:

  

orientation

     

返回设备的物理方向。 (只读)

     

@property(nonatomic, readonly) UIDeviceOrientation orientation

如果要为控制器设置特定的支持方向,则需要在其中实现多种方法:

来自Apple文档:UIViewController Reference

  

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

     

您可以覆盖打算以特定方向全屏显示的视图控制器的preferredInterfaceOrientationForPresentation。

     

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

     

当可见视图控制器发生旋转时,willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration:和didRotateFromInterfaceOrientation:在旋转期间调用方法。视图调整大小并由其父视图定位后,也会调用viewWillLayoutSubviews方法。如果在发生方向更改时视图控制器不可见,则永远不会调用旋转方法。但是,当视图变为可见时,将调用viewWillLayoutSubviews方法。您对此方法的实现可以调用statusBarOrientation方法来确定设备方向。