我已经覆盖了我的 UINavigationController 来实现这些方法:
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
现在从我的第一个视图来看,我在这里模态地展示这个 MSNavigationPaneViewController ,它就像一个 Facebook 侧滑动标签栏控制器。
我需要在此处显示的 1 个视图控制器仅显示横向,而应用程序的其余视图仅显示纵向。
因此,在我添加的所有其他视图控制器中:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate
{
return UIInterfaceOrientationMaskPortrait;
}
在我想要的景观中,我添加了:
- (BOOL)shouldAutorotate
{
return UIInterfaceOrientationMaskLandscape;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
然而,我所有的观点都在旋转。
如果我shouldRotate
在这些其他视图上更改为 NO,那么它们会停留在 Portrait 并且我想要成为 Landscape 的视图可以旋转,但是我无法让它自行旋转。此外,一旦旋转,如果我回到另一个视图,shouldRotate = NO;
它就无法旋转回纵向。
我已经在这工作了几个小时了,无法让它工作。
谢谢
编辑 - - -
我现在有这一半的工作,并开始了一个新问题,让自动旋转在这里工作