iOS Developer

UIDevice 扩展 - iOS检测设备类型

2016-10-13  本文已影响284人  豆志昂扬

在开发iOS 或 tvOS 应用的时候,Apple提供的自动布局通过动态计算视图大小来适配不同尺寸的屏幕,开发者再也不用担心因设备的屏幕大小各异带来的问题,但有时候开发者依然需要知道应用运行所在的设备的类型做相应特殊定制。

下面的 UIDevice 扩展恰恰提供了相关功能,每个iPhone类型代表不同的屏幕尺寸,如.iPhone55 代表iPhone 6 Plus / 6S Plus。

把下面代码拷贝到Swift类文件内,如 ** UIDeviceExtension.swift **

extension UIDevice {  
    enum DeviceType {
        case iPhone35
        case iPhone40
        case iPhone47
        case iPhone55
        case iPad
        case TV

        var isPhone: Bool {
            return [ .iPhone35, .iPhone40, .iPhone47, .iPhone55 ].contains(self)
        }
    }

    var deviceType: DeviceType? {
        switch UIDevice.currentDevice().userInterfaceIdiom {
        case .TV:
            return .TV

        case .Pad:
            return .iPad

        case .Phone:
            let screenSize = UIScreen.mainScreen().bounds.size
            let height = max(screenSize.width, screenSize.height)

            switch height {
            case 480:
                return .iPhone35
            case 568:
                return .iPhone40
            case 667:
                return .iPhone47
            case 736:
                return .iPhone55
            default:
                return nil
            }

        case .Unspecified:
            return nil
        }
    }
}

这样你就可以放心使用相关代码,如下:

guard let type = UIDevice.currentDevice().deviceType  
else {  
    // Unknown type
    return
}

if type == .TV {  
    // Code specific to Apple TV
}
else if type == .iPhone47 {  
    // Code specific to iPhone 6/6S
}
else if type.isPhone {  
    // Code specific to other iPhones
}

更多

获取更多内容请关注微信公众号豆志昂扬:

上一篇下一篇

猜你喜欢

热点阅读