iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

【Swift】iOSアプリで画面の向きをプログラムでロックする方法

はじめに

iOSアプリ開発では、UIを特定の向き(ランドスケープ/横画面、またはポートレート/縦画面)に固定して表示したいケースに遭遇することがあります。特に動画プレイヤーやゲームなどのアプリでは、画面が意図せず回転するとユーザー体験を損なう原因となります。

本記事では、Swiftを使ってiOSアプリの画面の向きをプログラムからロックする方法を解説します。

基本的な実装手順

Xcodeを開き、「File」→「New」→「Project」で新規プロジェクトを作成します。続いて、ViewController.swiftに以下のコードを記述してください。

// shouldAutorotate を false に設定し、自動回転を無効化
override open var shouldAutorotate: Bool {
   return false
}

// サポートする画面の向きを指定(ここでは縦向きに固定)
override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
   return .portrait
}

コードの解説

shouldAutorotate

デバイスが回転された際に、画面を自動的に回転させるかどうかを決定するプロパティです。falseを返すことで自動回転が無効になり、デバイスを傾けても画面の向きが変わりません。

supportedInterfaceOrientations

ビューコントローラーがサポートする画面の向きを指定するプロパティです。上記のコードでは .portrait を返しているため、画面は縦向きに固定されます。

横向きに固定したい場合

逆に横向き(ランドスケープ)で固定したい場合は、戻り値を変更するだけで対応できます。

override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
   return .landscape
}

.landscape のほかに、.landscapeLeft(左横向き)や .landscapeRight(右横向き)を個別に指定することも可能です。

補足:アプリ全体で向きを固定したい場合

特定の画面ではなく、アプリ全体で向きを固定したい場合は、以下の方法も有効です。

  • Xcodeの設定から変更: ターゲットの「General」→「Deployment Info」→「Device Orientation」で、不要な向きのチェックを外します。
  • AppDelegateで制御: 以下のように UIApplicationDelegate のメソッドを実装します。
func application(_ application: UIApplication,
                 supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return .portrait
}

まとめ

画面の向きのロックは、shouldAutorotate で自動回転を無効化し、supportedInterfaceOrientations で許可する向きを指定するだけで簡単に実装できます。アプリの仕様に合わせて、縦固定・横固定を適切に設定しましょう。

  1. 【iOS 16】ロック画面の通知をiOS 15風のリスト表示に戻す方法

    Appleが大幅に再設計したロック画面は、iOS 16アップデートにおける最大の話題の一つです。初めて本格的なカスタマイズが可能になったことで、ユーザー体験が大きく向上しました。時間帯によって自動的に変化する壁紙を複数の中から選択できるだけでなく、時計のデザインを変更したり、情報をひと目で確認できるウィジェットを追加したり、さらには特定のロック画面と特定の集中モードを連携させることまでできます。しかし、ロック画面の刷新に伴い、iOS 16では通知の表示方法も変更されました。従来のiOSのようにリスト形式で表示される代わりに、iOS 16の通知は画面下部にスタック形式で表示され、タップすると展開

  2. iOS 16でロック画面をカスタマイズする完全ガイド|壁紙・時計・ウィジェットの使い方

    iOS 16の登場により、iPhone史上最大となるロック画面の進化が実現しました。従来のiOSのロック画面といえば、通知を目視確認したり時刻をチェックしたりする場所にすぎませんでしたが、iOS 16の新機能によって初めて、その役割は大きく拡張されました。1日の流れに合わせて自動的に変化する魅力的な新壁紙でロック画面の見た目を自由にカスタマイズできるだけでなく、時計のデザインを変更したり、Apple Watchのようなウィジェットを追加したりすることで、iPhoneのロックを解除しなくても必要な情報をひと目で確認できるようになりました。とても便利ですよね。この記事では、iOS 16におけるロッ