0

你好,

我正在尝试为我的 iOS 应用程序实现方向旋转锁定/解锁切换开关。

锁定是可以的,但解锁是个问题。

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

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

编辑

我会澄清情况。

应用程序中有一个拨动开关,启用/禁用方向旋转。

一步步:

1. 开关启用。

2. 设备旋转到纵向。

3. UIViewController 的 shouldAutorotateToInterfaceOrientation 对每个方向都返回 YES。

4. 应用旋转到portlait。

5. 用户切换开关以禁用。

6. 设备旋转为横向。

7. UIViewController 的 shouldAutorotateToInterfaceOrientation 返回 NO 除了 portlait。

8. 应用不旋转。

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

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

4

3 回答 3

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);
于 2012-06-28T10:00:37.857 回答
0

在这里查看我的答案:https ://stackoverflow.com/a/13033443/580173

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

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if([self.viewControllers count] == 1) return UIInterfaceOrientationMaskPortrait;
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}
于 2012-10-23T15:03:56.077 回答
-1

您可以阅读处理自动旋转的“技术问答 QA1688”,并在每个视图控制器中制作消息 shouldAutorotateToInterfaceOrientation: 根据您的开关设置返回正确的值。您的 info.plist 中还有一个开关。确保您在此处也有正确的设置

于 2012-06-28T10:07:18.503 回答