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
}
更多
获取更多内容请关注微信公众号豆志昂扬:
- 直接添加公众号豆志昂扬;
- 微信扫描下图二维码;