我有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/