11

私のアプリは横向きのみであると想定されており、iOS 6以前用にビルドするときはこれで問題はありませんでした。現在iOS 7 では、まったく回転しません。

私のアプリ設定では、横向きの左/右のみに設定しています。私のView Controllerでは、次のものを使用しています:

- (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 に答える