12

私の知る限り、iOS 6での正しい方法は、自動回転を処理するために次のようなコードを書くことです。

// iOS 6
- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

書く代わりに

// pre-iOS 6 support
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    BOOL retVal = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
    return retVal;
}

正直なところ、iOS 6より前の方がはるかに明確だと思います。特にすべての例で-(BOOL) shouldAutorotate戻ってきたので、自動回転を処理する2つの方法があることの意味がわかりません。YES私は何かが足りないのですか?

4

1 に答える 1

8

新しいAPIを使用すると、呼び出しを保存して現在のデバイスの向きを取得できます。つまり、2つの質問です。

  • 新しい方向に関係なく、アプリケーションを自動回転させる必要があるかどうか、および
  • デバイスがサポートする方向は何ですか

ほとんどの場合、現在の向きを確認するために電話をかけることなく、静的に回答されます。画面に個別のビューコントローラによって制御される複数のビューがある場合、節約はより重要になります。

shouldAutorotateiOSは、加速度計からのイベントに応答してアプリに電話をかけているため、新しい方向をすでに認識しています。アプリが「はい」と答えた場合、iOSは現在の向きをサポートされているもののリストと照合し、アプリが現在の向きを照会せずに決定を下すことができます。

万が一、アプリが新しい向きに基づいて自動回転を決定する必要がある場合、新しいAPIは古いAPIよりも悪くないため、「勝ち抜き」の状況になります。

于 2012-10-09T17:54:45.387 に答える