私のアプリは横向きのみであるはずですが、iOS 6以前のビルドでは問題ありませんでした。 iOS 7、を使用すると、まったく回転しません。
私のアプリの設定では、横向きの左/右のみに設定しています。私のビューコントローラーでは、次のものを使用しています。
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
以前はこれを使用していましたが、現在は非推奨になっています。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return UIInterfaceOrientationIsLandscape(orientation);
}
新しいものはshouldAutorotateのようですが、これを使用するとアプリがクラッシュします。私のアプリはiPadとシミュレーターでポートレートを強制されるので、これに関するアイデアをいただければ幸いです。ありがとうございました!
これは私の問題を解決します。以前に問題が発生した理由はわかりませんが、この正確な組み合わせを試すのを逃したに違いありません(また、info.plistにはサポートされている方向が設定されている必要があります)。
(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
(BOOL)shouldAutorotate {
return YES;
}
編集:シミュレーターに問題がある可能性があり、リセット/再起動とクリーンアップを実行することで修正に貢献した可能性があります。
このメソッドもコードに含めます。
- (BOOL)shouldAutorotate{
if([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft ||[[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight)
{
return YES;
}
else{
return NO;
}
}
詳細は this を参照してください。ここでは、方向を抑制するためにshouldAutorotate
をオーバーライドする必要があると述べています。
自動回転を一時的に無効にする場合は、方向マスクを操作しないでください。代わりに、最上位のViewControllerでshouldAutorotateメソッドをオーバーライドします。このメソッドは、自動回転を実行する前に呼び出されます。 NOを返す場合、回転は抑制されます。
理由はわかりませんが、これはIOS 7
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
[super willRotateToInterfaceOrientation:UIInterfaceOrientationPortrait duration:0];
シミュレータで問題が発生した可能性があり、リセット/再起動およびクリーンアップを行ったことが修正に貢献した可能性があります。
これは私のために働いた:(シミュレーター->コンテンツと設定のリセット...)