UITabBarController / UINavigationController旋转问题

我的问题是以下几点:我只想允许所有ViewController的纵向方向,除了1个ViewController,它应该允许纵向和横向左/右。 现在我已经花费了将近2天的时间来为iOS设置不同的幻灯片/ ViewController的方向。 经过一番search,我发现这个线程在堆栈: UITabBarController旋转问题在iOS 6

我遵循了Kunani在这个主题中的例子,我将在这里贴出来保存所有的读者:

扎克,我遇到了同样的问题。 这是因为你的viewControllerembedded在TabBar控制器或UINavigationController内部,而这些方法的调用发生在那些内部,而不是正常的视图(在iOS6中改变)。 我遇到了这个问题,因为我在一个UINavigationController中embedded了一个viewController,这个viewController在所有的导航到不同视图(注册过程,login等等)的模态视图中。 我简单的修复就是为UINavigationController创build一个包含这两个方法的CATEGORY。 我已经应该说,不pipe怎么说,因为我不想让我的模态视图旋转。 你的修复可能是这个简单的,试试看吧。 希望能帮助到你。 我创build了一个类别并将其命名为autoRotate并select了UINavigationController选项。 下面是M + H文件。

#import "UINavigationController+autoRotate.h" @implementation UINavigationController (autoRotate) -(BOOL)shouldAutorotate { return NO; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } @end 

…和类别.h:

  #import <UIKit/UIKit.h> @interface UINavigationController (autoRotate) -(BOOL)shouldAutorotate; - (NSUInteger)supportedInterfaceOrientations; @end 

我做了他所说的,并尝试设置类别为我的UITabBarController工作,所有连接到TabBar的类现在只允许orientationPortrait。 但是,如果你看看下面的图片

在这里输入图像说明

(从我的项目截图)有一个名为ShowTaskView的StoryBoard中间有一个类。 这个类通过UINavigationController连接到大多数类(它们直接连接到UITabBarController)。 即使我设置UITabBarController只允许肖像也ShowTaskView似乎受该规则的影响,我不能让它旋转。 我的项目中的scheme也可以这样描述:

 TabBarController ----> UINavigationController -------> class X ----------> class ShowTaskView 

我可以从这里做什么,如果我想我的类连接到tabBarController只允许orientationPortrait和其余的类允许纵向和横向根据我的项目是如何build立? 在这个问题上我感到非常沮丧,因为它是如此难以解决:/

问候

请参阅我的答案在类似的线程: 导航控制器堆栈在横向模式,但模态地呈现视图控制器视图始终在纵向框架大小

iOS6通过导航堆栈控制旋转,因此将可旋转视图包裹到单独的导航控制器中,以便能够在那里控制它。