iphone:在导航时强制改变从纵向到横向的方向

时间:2012-07-23 10:33:27

标签: iphone objective-c uinavigationcontroller orientation landscape

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

我要求将控制器从A推到B. B应该是横向的,但我的A控制器是纵向的。

3 个答案:

答案 0 :(得分: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,此代码工作正常。

我用过这个。

希望这会对你有所帮助。

享受编码:)

答案 1 :(得分: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中,将您的视图方向设置为所需的方向

答案 2 :(得分:0)

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

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

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

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