2014-10-07 81 views
0

我正在使用UINavigationController的子類來管理我的應用程序的旋轉。ios-視圖控制器不會在當前方向加載

@implementation rotatingNavigationController 


- (BOOL)shouldAutorotate 
{ 
    return [self.topViewController shouldAutorotate]; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return [self.topViewController supportedInterfaceOrientations]; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return [self.topViewController preferredInterfaceOrientationForPresentation]; 
} 

在我的第一個觀點我只允許縱向:

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

我推到用故事板創造了一個推賽格瑞一個新的視圖控制器。新視圖控制器支持所有的接口方向:

- (BOOL)shouldAutorotate 
{ 

    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskAll; 
} 

新的視圖控制器總是加載在肖像,無論什麼方向的裝置被保持如果我身體後的設備變成縱向模式,並返回到景觀。查看負載,它正確旋轉。我該如何糾正這種情況,我需要視圖加載視圖時以何種方向加載設備?

+0

由於iOS6的我有很多的裏面UINavigationController的不同取向的視圖控制器的問題,並沒有適當的解決辦法已經找到。我試圖避免這種情況,並以模態方式呈現景觀視圖控制器。 – hybridcattt 2014-10-07 11:02:09

回答

0

當你推新控制器。檢查狀態欄的interfaceorientation則:

-(BOOL)shouldAutorotate 
{ 
    if(isPushingViewVC) 
     return NO 
    return YES; 
} 

而且

- (NSUInteger)supportedInterfaceOrientations 
{ 
    if(isPushingViewVC) 
    { 
     switch ([UIApplication sharedApplication].statusBarOrientation) 
     { 
      case UIInterfaceOrientationLandscapeLeft: 
       return UIInterfaceOrientationMaskLandscapeLeft; 
       break; 
      case UIInterfaceOrientationPortrait: 
       return UIInterfaceOrientationMaskPortrait; 
       break; 
      case UIInterfaceOrientationPortraitUpsideDown: 
       return UIInterfaceOrientationMaskPortraitUpsideDown; 
       break; 
      default: 
       return UIInterfaceOrientationMaskLandscape; 
       break; 
     } 
    } 
    return UIInterfaceOrientationMaskAll; 
} 
相關問題