以编程方式设置允许的方向

时间:2014-09-15 18:34:27

标签: ios objective-c xcode ios7 ios8

嘿,我试着设定我允许的方向,但它不起作用。

AppDelegate.m:

- (NSUInteger)supportedInterfaceOrientations
    {
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
        return UIInterfaceOrientationMaskAll;
        }else{
        return UIInterfaceOrientationMaskPortrait;
        }

    }

在我的Info.plist中,我激活了所有方向。

1 个答案:

答案 0 :(得分:0)

如果您希望自己的应用轮播,则需要在应用的每个视图控制器中设置旋转。

可能需要为UINavigationControllerUITabBarController创建一个自定义类,以便按照您对这种代码的想法调整所有内容:

@implementation CustomTabBarController

-(BOOL)shouldAutorotate
{
    if(self.viewControllers && self.selectedIndex<self.viewControllers.count)
        return ((UIViewController*)self.viewControllers[self.selectedIndex]).shouldAutorotate;
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    if(self.viewControllers && self.selectedIndex<self.viewControllers.count)
        return ((UIViewController*)self.viewControllers[self.selectedIndex]).supportedInterfaceOrientations;
    return UIInterfaceOrientationMaskPortrait;
}

@end

@implementation CustomNavigationController

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}

@end

使用这两个自定义类,您可以直接从ViewController本身处理您的应用是否应该旋转,所以它很方便。