我有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都处于纵向状态,但是问题来了,我想将ControllerC置于横向。

我经历了许多代码,但是没有任何令人满意的或可行的解决方案,但是我确实设法通过沿角度变换视图来旋转它-
[[UIApplication sharedApplication]]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight
animated:YES];
self.view.transform = CGAffineTransformMakeRotation(M_PI/2);

但是现在我想在controllerC上模态地显示ControllerD,如果旋转的话它不会出现在风景中,它将干扰所有其他的viewcontroller变换。

做完这么多之后,我又回到了通过某种有记载的方法在横向制作ControllerC的相同问题。

最佳答案

对于纵向模式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;
}

关于ios - 在UINavigationController堆栈中支持一个UIViewController的Landscape和其他人的Portrait,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18651176/

10-09 15:34