import UIKit
enum Device {
/*** iPhone ***/
case iPhone4
case iPhone4S
case iPhone5
case iPhone5C
case iPhone5S
case iPhone6
case iPhone6Plus
case iPhone6S
case iPhone6SPlus
case iPhoneSE
case iPhone7
case iPhone7Plus
case iPhone8
case iPhone8Plus
case iPhoneX
case iPhoneXS
case iPhoneXS_Max
case iPhoneXR
case iPhone11
case iPhone11Pro
case iPhone11Pro_Max
/*** iPad ***/
case iPad1
case iPad2
case iPad3
case iPad4
case iPad5
case iPad6
case iPad7
case iPadAir
case iPadAir2
case iPadAir3
case iPadMini
case iPadMini2
case iPadMini3
case iPadMini4
/*** iPadPro ***/
case iPadPro9_7Inch
case iPadPro12_9Inch
case iPadPro10_5Inch
case iPadPro12_9Inch2
case iPadPro11_0Inch
case iPadPro12_9Inch3
/*** iPod ***/
case iPodTouch1Gen
case iPodTouch2Gen
case iPodTouch3Gen
case iPodTouch4Gen
case iPodTouch5Gen
case iPodTouch6Gen
/*** simulator ***/
case simulator
/*** unknown ***/
case unknown
enum `Type` {
case iPhone
case iPad
case iPod
case simulator
case unknown
}
static var current: Device { getDevice() }
static var type: Type { getType() }
static var isRetina: Bool { UIScreen.main.scale > 1.0 }
static var isPad: Bool { type == .iPad }
static var isPhone: Bool { type == .iPhone }
static var isPod: Bool { type == .iPod }
static var isSimulator: Bool { type == .simulator }
}
extension Device {
private static var deviceCode: String {
var systemInfo = utsname()
uname(&systemInfo)
let versionCode: String = String(validatingUTF8: NSString(bytes: &systemInfo.machine, length: Int(_SYS_NAMELEN), encoding: String.Encoding.ascii.rawValue)!.utf8String!)!
return versionCode
}
private static func getDevice() -> Device {
switch deviceCode {
/*** iPhone ***/
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return .iPhone4
case "iPhone4,1", "iPhone4,2", "iPhone4,3": return .iPhone4S
case "iPhone5,1", "iPhone5,2": return .iPhone5
case "iPhone5,3", "iPhone5,4": return .iPhone5C
case "iPhone6,1", "iPhone6,2": return .iPhone5S
case "iPhone7,2": return .iPhone6
case "iPhone7,1": return .iPhone6Plus
case "iPhone8,1": return .iPhone6S
case "iPhone8,2": return .iPhone6SPlus
case "iPhone8,3", "iPhone8,4": return .iPhoneSE
case "iPhone9,1", "iPhone9,3": return .iPhone7
case "iPhone9,2", "iPhone9,4": return .iPhone7Plus
case "iPhone10,1", "iPhone10,4": return .iPhone8
case "iPhone10,2", "iPhone10,5": return .iPhone8Plus
case "iPhone10,3", "iPhone10,6": return .iPhoneX
case "iPhone11,2": return .iPhoneXS
case "iPhone11,4", "iPhone11,6": return .iPhoneXS_Max
case "iPhone11,8": return .iPhoneXR
case "iPhone12,1": return .iPhone11
case "iPhone12,3": return .iPhone11Pro
case "iPhone12,5": return .iPhone11Pro_Max
/*** iPad ***/
case "iPad1,1", "iPad1,2": return .iPad1
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4": return .iPad2
case "iPad3,1", "iPad3,2", "iPad3,3": return .iPad3
case "iPad3,4", "iPad3,5", "iPad3,6": return .iPad4
case "iPad6,11", "iPad6,12": return .iPad5
case "iPad7,5", "iPad7,6": return .iPad6
case "iPad4,1", "iPad4,2", "iPad4,3": return .iPadAir
case "iPad5,3", "iPad5,4": return .iPadAir2
case "iPad11,3", "iPad11,4": return .iPadAir3
case "iPad2,5", "iPad2,6", "iPad2,7": return .iPadMini
case "iPad4,4", "iPad4,5", "iPad4,6": return .iPadMini2
case "iPad4,7", "iPad4,8", "iPad4,9": return .iPadMini3
case "iPad5,1", "iPad5,2": return .iPadMini4
/*** iPadPro ***/
case "iPad6,3", "iPad6,4": return .iPadPro9_7Inch
case "iPad6,7", "iPad6,8": return .iPadPro12_9Inch
case "iPad7,1", "iPad7,2": return .iPadPro12_9Inch2
case "iPad7,3", "iPad7,4": return .iPadPro10_5Inch
case "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4": return .iPadPro11_0Inch
case "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8": return .iPadPro12_9Inch3
/*** iPod ***/
case "iPod1,1": return .iPodTouch1Gen
case "iPod2,1": return .iPodTouch2Gen
case "iPod3,1": return .iPodTouch3Gen
case "iPod4,1": return .iPodTouch4Gen
case "iPod5,1": return .iPodTouch5Gen
case "iPod7,1": return .iPodTouch6Gen
/*** Simulator ***/
case "i386", "x86_64": return .simulator
default: return .unknown
}
}
private static func getType() -> Type {
switch deviceCode {
case let code where code.contains("iPhone"): return .iPhone
case let code where code.contains("iPad"): return .iPad
case let code where code.contains("iPod"): return .iPod
case "i386", "x86_64": return .simulator
default: return .unknown
}
}
}
iOS 判断设备类型Device
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。