11

我的应用程序应该只是横向的,在为iOS 6及更早版本构建时我对此没有任何问题。现在使用iOS 7,它根本不会旋转。

在我的应用程序设置中,我将其设置为仅横向左/右。在我的视图控制器中,我使用以下内容:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}

我也曾经使用过这个,现在已弃用:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return UIInterfaceOrientationIsLandscape(orientation);
}

新的似乎是 shouldAutorotate,但使用它会使我的应用程序崩溃。对此的任何想法将不胜感激,因为我的应用程序被迫在我的 iPad 和模拟器中进行肖像画。谢谢!

4

4 回答 4

12

这解决了我的问题。我不知道为什么我之前有问题,但我一定错过了尝试这种确切的组合(另外,info.plist 应该设置支持的方向)。

(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

(BOOL)shouldAutorotate {
    return YES;
}

编辑:我的模拟器可能有问题,进行重置/重启和清理可能有助于修复。

于 2013-09-24T11:15:53.707 回答
4

在您的代码中也包含此方法:

- (BOOL)shouldAutorotate{
  if([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft ||[[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight)
  {
    return YES;
  }
  else{
    return NO;
  }
}

阅读内容以获取更多信息。这里提到我们应该覆盖shouldAutorotate以抑制方向。

如果您想暂时禁用自动旋转,请避免操作方向蒙版来执行此操作。相反,覆盖最顶层视图控制器上的 shouldAutorotate 方法。在执行任何自转之前调用此方法。如果它返回 NO,则旋转被抑制。

于 2013-09-23T13:00:41.513 回答
1

我不知道为什么,但这在 IOS 7 上对我有用

[[UIApplication sharedApplication] setStatusBarHidden:NO];

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

[super willRotateToInterfaceOrientation:UIInterfaceOrientationPortrait duration:0];
于 2014-02-26T14:02:04.747 回答
0

我可能在使用模拟器时遇到问题,并且进行重置/重启和清理可能有助于修复。

这对我有用:(模拟器->重置内容和设置...)

于 2016-07-13T11:32:01.890 回答