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

【Swift入門】UIUserInterfaceIdiomで現在のデバイス(iPhone/iPadなど)を判定する方法


iOS / Swiftで「現在どのデバイスで動作しているか」を判別したい場合は、UserInterfaceIdiomを利用します。これはSwiftに用意された列挙型(enum)で、アプリが実行されているデバイスの種類を簡単に取得できる便利な仕組みです。

UIUserInterfaceIdiomの列挙値一覧

userInterfaceIdiomは、以下のような複数のケース(case)を持つ列挙型として定義されています。

case unspecified
@available(iOS 3.2, *)
case phone // iPhoneおよびiPod touchスタイルのUI
@available(iOS 3.2, *)
case pad // iPadスタイルのUI
@available(iOS 9.0, *)
case tv // Apple TVスタイルのUI
@available(iOS 9.0, *)
case carPlay // CarPlayスタイルのUI

なお、iOS 14以降ではMac Catalyst向けのmac、iOS 17以降ではvisionOS向けのvisionというケースも追加されており、対応プラットフォームは年々広がっています。

Swiftでの基本的な使い方

実際にSwiftでuserInterfaceIdiomを使用する際は、以下のように記述します。UIDeviceクラスのcurrentプロパティから取得できるのがポイントです。

print(UIDevice.current.userInterfaceIdiom)
if UIDevice.current.userInterfaceIdiom == .phone {
   print("running on iPhone")
}

このコードをiPhone端末で実行すると、コンソールには次のように出力されます。

【Swift入門】UIUserInterfaceIdiomで現在のデバイス(iPhone/iPadなど)を判定する方法

より正確に判定するための補足

UIDevice.current.userInterfaceIdiomは「ハードウェア自体の種類」を返すため、iPad上でiPhone用アプリを互換モードで実行している場合などは、期待した結果にならないことがあります。そのようなケースでは、ビューコントローラ側でtraitCollection.userInterfaceIdiomを参照する方が、実際に表示されているUIの種類を正確に判定できます。

if self.traitCollection.userInterfaceIdiom == .pad {
   print("iPad用のUIで表示中")
}

用途に応じて両者を使い分けることで、デバイスごとのレイアウト調整や機能の出し分けを柔軟に行えます。

  1. Swift 3でアプリを作成する方法|新機能・開発環境・学習リソースを徹底解説

    Swiftは、macOSやiOSデバイス向けのアプリを開発するために使われるプログラミング言語です。Appleはデバイスから最速かつ最高効率のパフォーマンスを引き出すことを目的としてSwiftを設計しており、Swift 3では既に高い評価を受けていた機能セットがさらに拡張されました。 Swift 3の誕生背景:オープンソースコミュニティが生んだ初のメジャーアップデート 「Swiftはわずか6ヶ月前にオープンソースプロジェクトとして公開されました」と、Appleで言語およびランタイム部門のシニアマネージャーを務めるTed Kremenek氏は語ります。「GitHubにソースコードを公開すること

  2. Raspberry Pi 4公式ケースにファンを取り付けて冷却性能をアップする方法

    新型Raspberry Pi 4は、従来モデルと同じ小型ボディを保ちながら大幅に高性能化しました。しかし、性能向上の代償として消費電力も増加しており、旧モデルよりも多くの熱を発生します。アクティブ冷却なしでは、中程度の負荷でもサーマルスロットリング(熱による性能制限)が発生してしまいます。幸い、公式Raspberry Pi 4ケースにファンを自作・追加することで、この問題は解決できます。 注意:市場にはファン付きのサードパーティ製Raspberry Pi 4ケースが多数販売されています。本チュートリアルは、すでに公式Raspberry Pi 4ケースをお持ちのDIY愛好家向けの内容です。