1

これは別の投稿で見ました。iOS5 では最初のメソッドをオーバーライドし、iOS6 では次の 2 つのメソッドをオーバーライドする必要があることがわかりました。

iOS5:

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

iOS6

- (BOOL) shouldAutorotate
{
      return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
      return UIInterfaceOrientationMaskLandscapeRight;
}

しかし、それらを適切に使用する方法についていくつか質問があります。

  1. XCode プロジェクトの設定で supportedOrientations を設定したとしましょう。shouldAutoRotate と SupportedInterfaceOrientations を実装する必要がありますか? そうしないとどうなりますか?
  2. shouldAutoRotate をオーバーライドしない場合、デフォルト値は YES ですか?
  3. shouldAutorotateToInterface で NO を返すと、「shouldAutorotateToInterfaceOrientation: すべてのインターフェイスの向きに対して。少なくとも 1 つの向きをサポートする必要があります」という警告が表示されます。これは悪いですか?アプリに影響はありますか?
  4. 「サポートされている方向にはアプリケーションと共通の方向がなく、shouldAutorotate が YES を返しています。」というクラッシュが発生するのはいつですか?
  5. shouldAutorotate で NO を返し、複数の supprotedInterfaceOrientations がある場合はどうなりますか? 私の VC は回転しないので、ポートレートを使用するのと同じですか?
  6. shouldAutorotate で YES を返した場合、Xcode 設定でサポートされている向きが複数ありますが、supportedInterfaceOrientations をオーバーライドして 1 つだけを返すとどうなりますか?
4

1 に答える 1

2

私はこれらの答えの大部分をメモリで行っているので、いくつかのエラーがあるかもしれません...

  1. 入力した値は、すべてのビュー コントローラーに使用されます。1 つのビュー コントローラーで別の動作を指定する場合は、それらをオーバーライドする必要があります。
  2. はい。次の新しいプロジェクトでテストしました:

    // Should autorotate not implemented
    -(void)viewDidLoad {
         [super viewDidLoad];
         NSLog(@"%@", [self shouldAutorotate]?@"y":@"n");
    }
    
  3. 自動回転すべきではないと言っているが、 でサポートされている複数のインターフェイスの向きを彼に与えているため、警告が表示されますshouldAutorotateToInterfaceOrientation:。オリエンテーションをサポートし、可能なものを提供するか、提供しないかのどちらかです。
  4. たとえば、アプリケーション (.xcodeproj 内) に縦向きのみをサポートするように指示し、View Controller で、サポートされているインターフェイスの向きに縦向きが含まれていないことを指定した場合。
  5. システムに自動回転しないように指示しています。その後、回転を手動で行う必要があります。ステータス バーは回転しますが、インターフェイスは回転しない可能性があります。
  6. その画面は常にそのインターフェイスの向きになり、回転しません。xcodeproj で指定するインターフェイスは、アプリ全体でサポートできるものです。次に、それらの向きの 1 つまたは多くのみをサポートする特定のビュー コントローラーを使用できます。

とはいえ、通常、正確な動作を実現することは非常に困難です。したがって、通常のアプローチは「試行錯誤」です。または、私の先生の 1 人がいつも「エラー & トライアル」と言っていたように、あなたはすでにそのアプローチでエラーを起こしているので =)

于 2013-05-20T09:26:24.577 に答える