通过应用程序配置锁定/解锁iOS应用程序方向

时间:2012-06-28 09:37:21

标签: ios rotation orientation

您好,

我正在尝试将方向旋转锁定/解锁切换切换到我的iOS应用程序。

锁定没问题,但解锁是一个问题。

假设app的方向和设备方向不同的情况。如果用户在这种情况下解锁,应用程序的方向应立即遵循设备的方向。但我找不到方法。

如何模拟设备的方向旋转?

修改

我会澄清情况。

app中有一个切换开关,启用/禁用方向旋转。

一步一步:

1。开关已启用。

2。设备旋转到portlait。

3。 UIViewController的shouldAutorotateToInterfaceOrientation为每个方向返回YES。

4。 App旋转到portlait。

5。用户将开关切换为禁用。

6。设备旋转为横向。

7。除了portlait之外,UIViewController的shouldAutorotateToInterfaceOrientation返回NO。

8。应用程序不会旋转。

9。用户切换开关以启用。

10。应用程序应旋转到横向。这就是问题所在。

3 个答案:

答案 0 :(得分:1)

我还没试过,但有一个viewController方法attemptRotationToDeviceOrientation(iOS5)。可能值得一试。有趣的问题。报告是否有效。

// call this method when your return value from shouldAutorotateToInterfaceOrientation: changes
// if the current interface orientation does not match the current device orientation, 
// a rotation may occur provided all relevant view controllers now return YES from shouldAutorotateToInterfaceOrientation:
+ (void)attemptRotationToDeviceOrientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);

答案 1 :(得分:0)

请在此处查看我的回答:https://stackoverflow.com/a/13033443/580173

我制作了一个自定义UINavigationController,在那里你可以检查你是哪个视图,并使用正确的掩码进行响应。 (我希望根视图是肖像)

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if([self.viewControllers count] == 1) return UIInterfaceOrientationMaskPortrait;
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}

答案 2 :(得分:-1)

你可以阅读“技术Q& A QA1688”来处理autoratotion,并在每个viewcontroller中使消息shouldAutorotateToInterfaceOrientation:根据你的开关设置返回正确的值。您的info.plist中还有一个开关。请确保您在此处也有正确的设置