web-dev-qa-db-ja.com

横向きを無効にするにはどうすればよいですか?

IPhoneアプリを作成していますが、ポートレートモードにする必要があるため、ユーザーがデバイスを横に動かしても、自動的に回転しません。これどうやってするの?

30
user1483652

特定のView Controllerの向きを無効にする、 supportedInterfaceOrientations および preferredInterfaceOrientationForPresentation をオーバーライドする必要があります。

- (NSUInteger) supportedInterfaceOrientations {
    // Return a bitmask of supported orientations. If you need more,
    // use bitwise or (see the commented return).
    return UIInterfaceOrientationMaskPortrait;
    // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    // Return the orientation you'd prefer - this is what it launches to. The
    // user can still rotate. You don't have to implement this method, in which
    // case it launches in the current orientation
    return UIInterfaceOrientationPortrait;
}

IOS 6より古いものをターゲットにしている場合、 shouldAutorotateToInterfaceOrientation: メソッドが必要です。 yesを返すタイミングを変更することにより、指定した方向に回転するかどうかを決定します。これにより、通常の縦向きのみが許可されます。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 

    // Use this to allow upside down as well
    //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}

shouldAutorotateToInterfaceOrientation:はiOS 6.0で非推奨になったことに注意してください

51
thegrinner

Xcode 5以降

  • 左側のサイドバーのProject Navigatorでプロジェクトをクリックして、プロジェクト設定を開きます
  • 一般タブに移動します。
  • Deployment InfoセクションのDevice Orientationで、不要なオプションのチェックを外します

screenshot showing where to click

38
skywinder

Xcode 4以下

それを逃した人のために:プロジェクト設定画面を使用して、アプリ全体で方向を修正できます(すべてのコントローラーでメソッドをオーバーライドする必要はありません):

enter image description here

サポートされているインターフェイスの向きを切り替えるのと同じくらい簡単です。左側のパネルでプロジェクトをクリックし、アプリのターゲット> [概要]タブをクリックして見つけることができます。

28
Thomas Verbeek

iPhoneとiPadの両方の横向きを無効にする場合。

ターゲットに移動し、一般タブに移動します。下の画面と左右の横長を選択解除をご覧ください。

enter image description here

この場合、iPadではなくiPhone横モードのみが無効になります。 iPadの場合、すべてのモードが有効。ユニバーサルからiPadへのデバイスオプションを選択する場合。このようになります。下の画面をご覧ください。

enter image description here

ここで、すべてのモードの選択を解除する必要がありますiPadの場合は[Portraitを除く。以下のスクリーンショットを参照してください。

enter image description here

これで、すべてのモードが正常に無効になりましたポートレートを除く for すべてのデバイス

1
iOS

Swift navigationControllerがある場合、次のようにサブクラス化します(ポートレートのみ):

class CustomNavigationViewController: UINavigationController {

  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.portrait
  }

  override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
    return UIInterfaceOrientation.portrait
  }
}
1
kurtanamo

IPhoneとiPadで最も単純なソリューション(ユニバーサル)-info.plistファイルまたはで不要な方向を削除しますプロジェクト->情報->カスタムiOSターゲットプロパティ

リストにオリエンテーションアイテムを追加または削除するだけです。

  • サポートされているインターフェースの向きforiPhone
  • サポートされるインターフェースの向き(iPad)foriPar

enter image description here

0
Anonimys

Xcode 8、Xcode 9、Xcode 10以上

enter image description here

0
midhun p

クラスからメソッドshouldAutorotateToInterfaceOrientationを完全に削除することもできます。ローテーションを計画していない場合、クラスにメソッドを含めることは意味がありません。コードが少なければ少ないほど、物事をきれいに保ちます。

0
ElasticThoughts