我的应用程序应该只是风景,我在构建 iOS 6 及更早版本时没有遇到任何问题。现在使用 iOS 7,它根本不会旋转。
在我的应用设置中,我将其设置为仅左/右横向。在我的视图控制器中,我使用以下内容:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
我也习惯使用它,现在已弃用:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return UIInterfaceOrientationIsLandscape(orientation);
}
新的似乎是shouldAutorotate,但使用此崩溃我的应用程序。任何想法都将受到赞赏,因为我的应用程序被迫在我的iPad和模拟器中画像。谢谢!
答案 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)
我可能遇到了模拟器的问题,并进行了重置/重启 和清洁可能有助于修复。
这对我有用:(模拟器 - >重置内容和设置......)