2

我有 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 中,但是问题来了,我希望 controllerC 在风景中。

我经历了许多代码,但有任何令人满意或可行的解决方案,但我确实设法通过沿角度变换视图来旋转它——

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

但是现在我想在 controllerC 上以模态方式呈现 ControllerD,如果它通过某种旋转它不会进入横向,它会干扰所有其他视图控制器变换。

在做了这么多之后,我又回到了通过一些记录的方法在景观中制作 ControllerC 的同样问题。

4

1 回答 1

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;
}
于 2013-09-06T06:25:59.253 回答