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

Posted

技术标签:

【中文标题】以编程方式设置允许的方向【英文标题】:Set allowed orientations programmatically 【发布时间】:2014-09-15 18:34:26 【问题描述】:

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

AppDelegate.m:

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

    

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

【问题讨论】:

【参考方案1】:

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

可能有必要为您的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 本身处理您的应用是否应该旋转,这样就很方便了。

【讨论】:

我想旋转。我想设置允许的演说。是否可以在应用程序委托中说我支持 ios8 和整个应用程序的旧版本? 您需要为应用程序的每个视图控制器设置允许的方向(或使用继承仅定义一次),但要使其工作,您必须在 TabBar 和 navigationBar 中定义它(如果符合条件)。

以上是关于以编程方式设置允许的方向的主要内容,如果未能解决你的问题,请参考以下文章

swift ios 以编程方式设置 PageViewController 的过渡样式和方向

如何在iOS 7中以编程方式设置设备方向?

如何使用 ODFDOM 设置 ods 电子表格的页面大小、页面方向和页边距?

你能以编程方式修改 UICollectionView 滚动方向吗?

以编程方式设置 AutoLayout 大小类?

可以以编程方式重置位置和隐私设置吗?