在iOS 7中强制横向和自动旋转

时间:2013-09-23 12:51:50

标签: ios ipad ios-simulator ios7

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

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

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

我也习惯使用它,现在已弃用:

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

新的似乎是shouldAutorotate,但使用此崩溃我的应用程序。任何想法都将受到赞赏,因为我的应用程序被迫在我的iPad和模拟器中画像。谢谢!

4 个答案:

答案 0 :(得分:12)

这解决了我的问题。我不确定为什么我之前遇到过问题,但我一定错过了尝试这个确切的组合(同样,info.plist也应该设置支持的方向)。

(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

(BOOL)shouldAutorotate {
    return YES;
}

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

答案 1 :(得分:4)

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

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

阅读this了解详情。这里提到我们应该覆盖shouldAutorotate来压制方向。

  

如果要暂时禁用自动旋转,请避免   操纵方向掩码来做到这一点。相反,覆盖   最顶层视图控制器上的shouldAutorotate方法。这个方法是   在执行任何自动旋转之前调用。如果它返回NO,那么   旋转被抑制。

答案 2 :(得分:1)

我不知道为什么,但这对我在IOS 7上的工作

[[UIApplication sharedApplication] setStatusBarHidden:NO];

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

[super willRotateToInterfaceOrientation:UIInterfaceOrientationPortrait duration:0];

答案 3 :(得分:0)

  

我可能遇到了模拟器的问题,并进行了重置/重启   和清洁可能有助于修复。

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