1

我的问题如下:我只想在我的所有视图控制器上允许纵向方向,除了 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 并且其余类根据我的项目的构建方式允许纵向和横向,我可以从这里做什么?我对这个问题感到非常沮丧,因为它很难解决:/

问候

4

1 回答 1

0

请参考我在类似线程中的回答:Navigation controller stack in landscape mode, but modally present view controller view always in portrait frame size

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

于 2012-11-02T12:35:22.873 回答