Objective c iOS 6.0 UINavigationController中的设备定向

Objective c iOS 6.0 UINavigationController中的设备定向,objective-c,ios6,autorotate,Objective C,Ios6,Autorotate,我在UITabbarcontroller中有一个UINavigationController。我只想在UINavigationController内旋转一个视图cotnroller 下面是我正在使用的代码片段 -(NSUInteger)supportedInterfaceOrientations { if (CURRENTDEVICE == IPHONE) return [self.navigationController supportedInterfaceOrientations]

我在UITabbarcontroller中有一个UINavigationController。我只想在UINavigationController内旋转一个视图cotnroller

下面是我正在使用的代码片段

-(NSUInteger)supportedInterfaceOrientations
{
if (CURRENTDEVICE == IPHONE)
    return [self.navigationController supportedInterfaceOrientations] | UIInterfaceOrientationMaskAllButUpsideDown;
else
    return UIInterfaceOrientationMaskAll;
}

-(BOOL)shouldAutorotate {
return YES;
}
我在UINavigationController上也有一个类别:

#import "UINavigationController+autorotate.h"

@implementation UINavigationController (autorotate)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

@end

我不知道如何实现它。

您可以使用cgrect硬编码它。这里是另一个问题的链接,可能对您有所帮助。这里有一个很好的例子,为旋转对两个不同的视图进行硬编码,但我个人并不推荐。无论如何,我想这可能会给你指明正确的方向

这个问题中有一组代码可能会让你开始。在右舷也有一个选项(如果您使用的是故事板),可以在IB中设置旋转,这要容易得多

希望这有帮助


adrian

支持的界面方向
实现中的您的类别中,您可以检查
topViewController
。您可以使用
类的种类:
方法来确定它是哪个类。。。然后返回与默认导航不同的方向

您还可以子类化
UINavigationController
,并以相同的方式执行此检查。在iOS 6之前,不建议对导航控制器进行子类化,文档中仍然说明了这一点,但苹果工程师告诉我,使用新的旋转逻辑,您可以对
UINavigationController
进行子类化