在UINavigationController Stack中支持一个UIViewController和其他人的Portrait的Landscape

时间:2013-09-06 06:19:23

标签: ios uiviewcontroller uiinterfaceorientation

我有4个UIViewControllers - 命名为ControllerA,ControllerB,ControllerC,ControllerD。

其中ControllerA是UINavigationStack中的RootViewController。

ControllerA *ca = [[ControllerA alloc]initWithNibName:@"ControllerA" bundle:nil];
UINavigationController *nv = [[UINavigationController alloc]initWithRootViewController:ca];
self.window.rootViewController = nv;

在推动ControllerB后,他们都在potrait,但问题来到这里我想要控制器C在风景中。

我已经完成了许多代码,但任何令人满意或有效的解决方案,但我确实设法通过沿角度转换视图来旋转它 -

[[UIApplication sharedApplication]]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight
animated:YES];
self.view.transform = CGAffineTransformMakeRotation(M_PI/2);

但是现在我想在控制器C上呈现模态控制器,如果通过一些旋转它不会进入横向,它会干扰所有其他的视图控制器转换。

在做了这么多之后,我回过头来讨论通过一些记录方法制作ControllerC的相同问题。

1 个答案:

答案 0 :(得分:1)

对于纵向模式VC,

#pragma mark iOS 5 Orientation Support

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

     return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

#pragma mark iOS 6 Orientation Support

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

对于横向模式VC,

#pragma mark - iOS 5.0 and up Rotation Methods

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return UIInterfaceOrientationMaskLandscape;

}

#pragma mark - iOS 6.0 and up Rotation Methods

- (NSUInteger)supportedInterfaceOrientations;
{
    return UIInterfaceOrientationMaskLandscape;
}