3

有什么方法可以在导航时强制将应用程序方向从纵向更改为横向?

我有一个要求,在将控制器从 A 推到 B 时。B 应该是横向的,但我的 A 控制器是纵向的。

4

3 回答 3

9

在您的 ViewController-B 中,在 viewDidLoad 中添加以下代码行:

  [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

  float   angle = M_PI/2;  //rotate 180°, or 1 π radians
  self.view.layer.transform = CATransform3DMakeRotation(angle, 0, 0.0, 1.0);

如果您使用导航控制器从 A 移动到 B,则此代码可以正常工作。

我用过这个。

希望这会帮助你。

享受编码:)

于 2012-07-23T11:07:03.337 回答
0

- (void)viewWillAppear:(BOOL)animated

    //this is to force the application to re-evaluate device orientation
    //comment the last lines and see
    //cannot use [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];
    //as "setOrientation" is a private method, and we risk to be kicked out by Apple
    UIViewController *c = [[[UIViewController alloc]init] autorelease];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];

...但首先,在您的 xib 中,将视图的方向设置为所需的方向

于 2012-07-23T10:37:35.013 回答
0

根据我在上一个尝试这样做的应用程序的经验,我发现堆栈溢出的答案告诉不要强行更改基于导航的应用程序中的方向。

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
 if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        return NO;
else
    return YES;
}

此功能将让您以所需的方向使用视图控制器,在这种情况下,我将其设置为横向,并且不允许在纵向模式下旋转。

您将面临 B 视图控制器首先在 A 视图控制器上的方向加载的问题。所以我将应用程序的完整方向更改为横向。希望这可以帮助。

于 2012-07-23T10:57:19.337 回答