在一个视图控制器强制肖像使其他人最初在肖像

导航控制器的根视图控制器只支持纵向方向,其他控制器支持所有的方向。现在,如果我在根视图控制器和设备在横向,如果我推动下一个视图控制器打开纵向应打开在横向它支持所有的方向。

请帮我解决一下这个。

使用iPhone 4s iOS6.1.3

您可以使用以下代码在login视图控制器后检查第一个屏幕中的设备方向: –

-(void)viewWillAppear:(BOOL)animated { [self willRotateToOrientation:[[UIDevice currentDevice] orientation]]; [super viewWillAppear:YES]; } - (void)willRotateToOrientation:(UIInterfaceOrientation)newOrientation { if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) { if (newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight) { //set your landscap View Frame [self supportedInterfaceOrientations]; } } else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) { if(newOrientation == UIInterfaceOrientationPortrait || newOrientation == UIInterfaceOrientationPortraitUpsideDown){ //set your Potrait View Frame [self supportedInterfaceOrientations]; } } // Handle rotation } 

当你加载这个viewcontroller它检查第一个设备oriantation,然后加载它的相关框架

我认为这是与iOS6的方向变化有关的问题。 您需要UINavigationController

检查这个

1。 你必须创buildUINavigationController的子类。 添加以下方法..取一个布尔variables来检查是否支持所有方向,并更改其值。

  @implementation NavigationControllerViewController - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { AppDelegate *appdelgate=[[UIApplication sharedApplication]delegate]; if (appdelgate.issuppoertAll) { // for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown return UIInterfaceOrientationMaskAll; } return UIInterfaceOrientationMaskPortrait; } @end 

2时,您将窗体根视图控制器导航到其他视图控制器

使用此代码,当你想强制改变其orientation.ie lanscape肖像

  obj_viewcontroller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; [self presentModalViewController:obj_viewcontroller animated:NO]; [self dismissModalViewControllerAnimated:NO]; [self.navigationController pushViewController:obj_viewcontroller animated:NO]; 

3在第二个视图控制器中,您必须更改布尔variables值

 -(void)viewWillAppear:(BOOL)animated { appdelgate.issuppoertAll=YES; } 

4将此方法添加到所有视图控制器中并根据需要设置方向。

 - (NSInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }