在 Swift 中 使用 UI_USER_INTERFACE_IDIOM() 查看当前设备

在 Swift 中与 UI_USER_INTERFACE_IDIOM() 等同的、用于检测设备是 iPhone 还是 iPad 的方法是什么呢?


Swift 中可以使用 enum UIUserInterfaceIdiom,定义如下:

enum UIUserInterfaceIdiom : Int {
    case unspecified

    case phone // iPhone 和 iPod touch 形式的 UI
    case pad // iPad 形式的 UI
}

所以可以这么使用:

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

或者用 Switch 语句:

switch UIDevice.current.userInterfaceIdiom {
    case .phone:
        // 这是 iPhone
    case .pad:
        // 这是 iPad
    case .unspecified:
        // Uh, oh! 这什么鬼?
    }

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] 就好了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容