我的问题如下:我只想在我的所有视图控制器上允许纵向方向,除了 1 个视图控制器,它应该允许纵向和横向左/右。我现在花了将近 2 天的时间来研究如何在 IOS 中为不同的幻灯片/视图控制器设置方向。经过一番搜索,我在堆栈中找到了这个线程:UITabBarController Rotation Issues in ios 6
我在该线程中遵循了 Kunani 的示例,我将在此处发布以节省所有读者的时间:
扎克,我遇到了同样的问题。这是因为您将 viewController 嵌入在 TabBar 控制器或 UINavigationController 中,并且对这些方法的调用发生在这些方法中,而不是您的普通视图(在 iOS6 中更改)。我遇到了这个问题,因为我在所有具有导航到不同视图(注册过程、登录等)的模态视图上都呈现了一个嵌入 UINavigationController 的视图控制器。我的简单解决方法是为包含这两种方法的 UINavigationController 创建一个 CATEGORY。我有 shouldAutorotate 无论如何都返回 NO,因为我不希望我的模态视图旋转。你的修复可能就是这么简单,试一试。希望能帮助到你。我创建了一个类别并将其命名为 autoRotate 并选择了 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。但是如果你看下面的图片
(来自我的项目的屏幕截图)StoryBoard 中间有一个名为 ShowTaskView 的类。这个类通过 UINavigationController 连接到大多数类(直接连接到 UITabBarController)。即使我将 UITabBarController 设置为仅允许 Portrait,ShowTaskView 似乎也受到该规则的影响,我无法使其旋转。我项目中的方案也可以这样描述:
TabBarController ----> UINavigationController -------> class X ----------> class ShowTaskView
如果我希望我的类连接到 tabBarController 以仅允许orientationPortrait 并且其余类根据我的项目的构建方式允许纵向和横向,我可以从这里做什么?我对这个问题感到非常沮丧,因为它很难解决:/
问候