您好,
我正在尝试将方向旋转锁定/解锁切换切换到我的iOS应用程序。
锁定没问题,但解锁是一个问题。
假设app的方向和设备方向不同的情况。如果用户在这种情况下解锁,应用程序的方向应立即遵循设备的方向。但我找不到方法。
如何模拟设备的方向旋转?
修改
我会澄清情况。
app中有一个切换开关,启用/禁用方向旋转。
一步一步:
1。开关已启用。
2。设备旋转到portlait。
3。 UIViewController的shouldAutorotateToInterfaceOrientation为每个方向返回YES。
4。 App旋转到portlait。
5。用户将开关切换为禁用。
6。设备旋转为横向。
7。除了portlait之外,UIViewController的shouldAutorotateToInterfaceOrientation返回NO。
8。应用程序不会旋转。
9。用户切换开关以启用。
10。应用程序应旋转到横向。这就是问题所在。
答案 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中还有一个开关。请确保您在此处也有正确的设置