“支持的接口方向”有先例吗?

时间:2013-05-04 16:04:04

标签: ios objective-c auto-rotation

我正在开发一个应用程序,我想要一个屏幕自动旋转到横向。

这将是应用程序中唯一的旋转屏幕。

我正在努力寻找最简单的方法。

如果我在构建摘要页面中设置了支持的方向(即使用切换按钮),那么它只是纵向。我可以在我想要自动旋转的屏幕的代码中覆盖它吗?

或者我必须反过来这样做吗?即支持所有方向,然后禁用我不想旋转的所有屏幕?

由于

3 个答案:

答案 0 :(得分:1)

  

或者我必须反过来这样做吗?即支持所有方向,然后禁用我不想旋转的所有屏幕?

是。您必须列出Info.plist 所有您将支持的方向。然后使用supportedInterfaceOrientations限制特定视图控制器方向。必须提供您的一个横向视图控制器,即使用“模态”segue或调用presentViewController:animated:

我的回答可能有用:

https://stackoverflow.com/a/13755923/341994

我的答案在这里:

https://stackoverflow.com/a/15301322/341994

答案 1 :(得分:0)

将观察者添加到要旋转的视图的viewDidLoad方法,如下所示:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter]
 addObserver:self selector:@selector(orientationChanged:)
 name:UIDeviceOrientationDidChangeNotification
 object:[UIDevice currentDevice]];

然后根据要在 orientationChanged 方法中更改的视图设置视图,如下所示:

- (void) orientationChanged:(NSNotification *)note{
UIDevice * device = [UIDevice currentDevice];
switch(device.orientation)
{
    case UIDeviceOrientationPortrait:

        break;
    case UIDeviceOrientationPortraitUpsideDown:

        break;
    case UIDeviceOrientationLandscapeLeft:

        break;
    case UIDeviceOrientationLandscapeRight:

        break;

    default:
        break;
  };
}

答案 2 :(得分:0)

在iOS 6中,应用程序支持的方向(在Info.plist中说明)与顶视图控制器支持的方向进行“与”运算,因此为了实现您想要的目标,您需要声明对每个方向的支持Info.plist,然后覆盖您不希望进行轮换的视图控制器中的supportedOrientations:方法,例如:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}