Swift で UI_USER_INTERFACE_IDIOM() を使用して現在のデバイスを検出する 質問する

Swift で UI_USER_INTERFACE_IDIOM() を使用して現在のデバイスを検出する 質問する

UI_USER_INTERFACE_IDIOM()iPhone と iPad の間で検出するための Swiftの に相当するものは何ですか?

Use of unresolved identifierSwift でコンパイルするとエラーが発生します。

ベストアンサー1

enum UIUserInterfaceIdiomSwift を使用する場合、次のように定義される を使用できます。

enum UIUserInterfaceIdiom : Int {
    case unspecified
    
    case phone // iPhone and iPod touch style UI
    case pad   // iPad style UI (also includes macOS Catalyst)
}

次のように使用できます:

UIDevice.current.userInterfaceIdiom == .pad
UIDevice.current.userInterfaceIdiom == .phone
UIDevice.current.userInterfaceIdiom == .unspecified

または、Switch ステートメントを使用します。

    switch UIDevice.current.userInterfaceIdiom {
    case .phone:
        // It's an iPhone
    case .pad:
        // It's an iPad (or macOS Catalyst)

     @unknown default:
        // Uh, oh! What could it be?
    }

UI_USER_INTERFACE_IDIOM()は Objective-C マクロであり、次のように定義されます。

#define UI_USER_INTERFACE_IDIOM() \ ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? \ [[UIDevice currentDevice] userInterfaceIdiom] : \ UIUserInterfaceIdiomPhone)

また、Objective-C で作業する場合でも、UI_USER_INTERFACE_IDIOM()マクロが必要なのは iOS 3.2 以下をターゲットにする場合のみであることに注意してください。iOS 3.2 以上にデプロイする場合は、[UIDevice userInterfaceIdiom]直接使用できます。

おすすめ記事