你可以在iOS应用程序中全局禁用轮换吗?

时间:2012-04-12 13:56:50

标签: ios xcode

我有一个由很多视图控制器组成的应用程序......在项目摘要中,我将纵向方向设置为唯一受支持的设备方向。

然而,当转向侧面时,应用程序仍然会搞砸。

我的问题是,有没有办法通过app delegate或其他东西全局禁用自动旋转?

或者我是否必须进入所有视图控制器并添加“shouldAutorotateToInterfaceOrientation”方法?

只是不想错过将其添加到其中一个......

谢谢!

6 个答案:

答案 0 :(得分:69)

在Info.plist中展开“支持的界面方向”并删除横向项目,使您的应用程序仅以纵向模式运行。

答案 1 :(得分:13)

现在info.plist中有三种设备方向键。

  1. 支持的界面方向(iPad)
  2. 支持的界面方向(iPhone)
  3. 支持的界面方向
  4. 第三个是我认为非通用应用程序,其余两个用于iPad和iPhone。

    你应该试一试。

    enter image description here

答案 2 :(得分:11)

在努力设置UIViewController的shouldAutorotatesupportedInterfaceOrientation方法后,在iOS6中没有成功,我发现最有效的方法是在app delegate中设置它。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskPortrait;
}

但是,返回UIInterfaceOrientationMaskPortraitUpsideDown会导致我的应用崩溃。我不知道我做错了什么!

答案 3 :(得分:5)

在根视图控制器的方法中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

设置'return NO';

这应该适用于所有视图。

答案 4 :(得分:1)

如果你支持iPad,那么你不应该取消选中横向,因为它会阻止Apple在App Store上接受你的应用。

要在应用显示第一个屏幕之前阻止旋转,请将其放入AppDelegate.m

此方法适用于上述iOS 7.1中的测试。

// G - fix for ipad.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskPortrait;
}

答案 5 :(得分:0)

从IOS 6开始,Haris Hussain的答案现在似乎已被弃用,但有一些新的方法可用于限制/启用轮换。

以下是UIViewController标头中列出的方法:

// New Autorotation support.
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0);
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0);
// Returns interface orientation masks.
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0);

请注意,如果您在已经旋转的状态下启动应用程序,那么shouldAutoRotate似乎不起作用!