UI_USER_INTERFACE_IDIOM()
iPhone と iPad の間で検出するための Swiftの に相当するものは何ですか?
Use of unresolved identifier
Swift でコンパイルするとエラーが発生します。
ベストアンサー1
enum
UIUserInterfaceIdiom
Swift を使用する場合、次のように定義される を使用できます。
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]
直接使用できます。