no message
This commit is contained in:
1 parent
de5bd21a43
commit
568ad5c409
262 files changed
+23226
-78
No files matched your search
+112
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
Erica Sadun, http://ericasadun.com
|
||||
iPhone Developer's Cookbook, 6.x Edition
|
||||
BSD License, Use at your own risk
|
||||
|
||||
Modified by Eric Horacek for Monospace Ltd. on 2/4/13
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#define IS_IPAD (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
|
||||
#define DEVICE_IOS_VERSION [[UIDevice currentDevice].systemVersion floatValue]
|
||||
|
||||
#define DEVICE_HAS_RETINA_DISPLAY (fabs([UIScreen mainScreen].scale - 2.0) <= fabs([UIScreen mainScreen].scale - 2.0)*DBL_EPSILON)
|
||||
#define IS_IOS7_OR_LATER (((double)(DEVICE_IOS_VERSION)-7.0) > -((double)(DEVICE_IOS_VERSION)-7.0)*DBL_EPSILON)
|
||||
#define NSStringAdd568hIfIphone4inch(str) [NSString stringWithFormat:[UIDevice currentDevice].isIphoneWith4inchDisplay ? @"%@-568h" : @"%@", str]
|
||||
|
||||
#define IS_IPHONE_5 [[UIScreen mainScreen] applicationFrame].size.height == 568
|
||||
|
||||
typedef NS_ENUM(NSUInteger, UIDeviceFamily) {
|
||||
UIDeviceFamilyiPhone,
|
||||
UIDeviceFamilyiPod,
|
||||
UIDeviceFamilyiPad,
|
||||
UIDeviceFamilyAppleTV,
|
||||
UIDeviceFamilyUnknown,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, UIDeviceGenerationModel) {
|
||||
UIDeviceGenerationModeliPhone3G,
|
||||
UIDeviceGenerationModeliPhone3GS,
|
||||
UIDeviceGenerationModeliPhone4,
|
||||
UIDeviceGenerationModeliPhone4S,
|
||||
UIDeviceGenerationModeliPhone5,
|
||||
UIDeviceGenerationModeliPhone5C,
|
||||
UIDeviceGenerationModeliPhone5S,
|
||||
UIDeviceGenerationModeliPhone6,
|
||||
UIDeviceGenerationModeliPhone6Plus,
|
||||
UIDeviceGenerationModeliPhone6S,
|
||||
UIDeviceGenerationModeliPhone6SPlus,
|
||||
UIDeviceGenerationModeliPhoneSimulator,
|
||||
UIDeviceGenerationModeliPad1,
|
||||
UIDeviceGenerationModeliPad2,
|
||||
UIDeviceGenerationModeliPad3,
|
||||
UIDeviceGenerationModeliPad4,
|
||||
UIDeviceGenerationModeliPadAir,
|
||||
UIDeviceGenerationModeliPadAir2,
|
||||
UIDeviceGenerationModeliPadMini1,
|
||||
UIDeviceGenerationModeliPadMini2,
|
||||
UIDeviceGenerationModeliPadMini3,
|
||||
UIDeviceGenerationModeliPadMini4,
|
||||
UIDeviceGenerationModeliPadPro,
|
||||
UIDeviceGenerationModeliPadSimulator,
|
||||
UIDeviceGenerationModeliPod1,
|
||||
UIDeviceGenerationModeliPod2,
|
||||
UIDeviceGenerationModeliPod3,
|
||||
UIDeviceGenerationModeliPod4,
|
||||
UIDeviceGenerationModeliPod5,
|
||||
UIDeviceGenerationModeliPod6,
|
||||
UIDeviceGenerationModelAppleTV1,
|
||||
UIDeviceGenerationModelAppleTV2,
|
||||
UIDeviceGenerationModelAppleTV3,
|
||||
UIDeviceGenerationModelAppleTV3_v2,
|
||||
UIDeviceGenerationModelAppleTV4,
|
||||
UIDeviceGenerationModelUnknown
|
||||
};
|
||||
|
||||
|
||||
typedef NS_ENUM(NSUInteger, UIDeviceModelInches) {
|
||||
UIDeviceModelInches35,
|
||||
UIDeviceModelInches4,
|
||||
UIDeviceModelInches47,
|
||||
UIDeviceModelInches55,
|
||||
UIDeviceModelInches79,
|
||||
UIDeviceModelInches97,
|
||||
UIDeviceModelInches129,
|
||||
UIDeviceModelInchesUnKnown
|
||||
};
|
||||
|
||||
|
||||
@interface UIDevice (Hardware)
|
||||
|
||||
/**
|
||||
Returns a machine-readable model name in the format of "iPhone4,1"
|
||||
*/
|
||||
- (NSString *)modelIdentifier;
|
||||
|
||||
/**
|
||||
Returns a human-readable model name in the format of "iPhone 4S". Fallback of the the `modelIdentifier` value.
|
||||
*/
|
||||
- (NSString *)modelName;
|
||||
|
||||
/**
|
||||
Returns the device generation model as a `UIDeviceGenerationModel`
|
||||
*/
|
||||
- (UIDeviceGenerationModel) deviceGenerationModel;
|
||||
|
||||
/**
|
||||
Returns the device generation model as a NSString `iPhone4`
|
||||
*/
|
||||
- (NSString*) deviceGenerationModelString;
|
||||
|
||||
/**
|
||||
Returns the device family as a `UIDeviceFamily`
|
||||
*/
|
||||
- (UIDeviceFamily)deviceFamily;
|
||||
|
||||
/**
|
||||
Returns the device Inches
|
||||
*/
|
||||
- (UIDeviceModelInches) deviceInches;
|
||||
|
||||
@end
|
||||
+345
@@ -0,0 +1,345 @@
|
||||
/*
|
||||
Erica Sadun, http://ericasadun.com
|
||||
iPhone Developer's Cookbook, 6.x Edition
|
||||
BSD License, Use at your own risk
|
||||
|
||||
Modified by Eric Horacek for Monospace Ltd. on 2/4/13
|
||||
*/
|
||||
|
||||
#include <sys/sysctl.h>
|
||||
#import "UIDevice-Hardware.h"
|
||||
|
||||
@interface UIDevice (Hardward)
|
||||
|
||||
- (NSString *)modelNameForModelIdentifier:(NSString *)modelIdentifier;
|
||||
|
||||
@end
|
||||
|
||||
@implementation UIDevice (Hardware)
|
||||
|
||||
- (NSString *)getSysInfoByName:(char *)typeSpecifier
|
||||
{
|
||||
size_t size;
|
||||
sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
|
||||
|
||||
char *answer = malloc(size);
|
||||
sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
|
||||
|
||||
NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
|
||||
|
||||
free(answer);
|
||||
return results;
|
||||
}
|
||||
|
||||
- (NSString *)modelIdentifier
|
||||
{
|
||||
return [self getSysInfoByName:"hw.machine"];
|
||||
}
|
||||
|
||||
- (NSString *)modelName
|
||||
{
|
||||
return [self modelNameForModelIdentifier:[self modelIdentifier]];
|
||||
}
|
||||
|
||||
- (NSString *)modelNameForModelIdentifier:(NSString *)modelIdentifier
|
||||
{
|
||||
// iPhone http://theiphonewiki.com/wiki/IPhone
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (GSM Rev A)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
|
||||
|
||||
// iPad http://theiphonewiki.com/wiki/IPad
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad1,1"]) return @"iPad 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,1"]) return @"iPad 2 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,4"]) return @"iPad 2 (Rev A)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,1"]) return @"iPad 3 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,3"]) return @"iPad 3 (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,4"]) return @"iPad 4 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,6"]) return @"iPad 4 (Global)";
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,1"]) return @"iPad Air (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
|
||||
|
||||
// iPad Mini http://theiphonewiki.com/wiki/IPad_mini
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,5"]) return @"iPad mini 1G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,6"]) return @"iPad mini 1G (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,7"]) return @"iPad mini 1G (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,6"]) return @"iPad mini 2G (Cellular)"; // TD-LTE model see https://support.apple.com/en-us/HT201471#iPad-mini2
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,7"]) return @"iPad mini 3G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,8"]) return @"iPad mini 3G (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,9"]) return @"iPad mini 3G (Cellular)";
|
||||
|
||||
// iPod http://theiphonewiki.com/wiki/IPod
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPod1,1"]) return @"iPod touch 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod2,1"]) return @"iPod touch 2G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod3,1"]) return @"iPod touch 3G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod4,1"]) return @"iPod touch 4G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod5,1"]) return @"iPod touch 5G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod7,1"]) return @"iPod touch 6G"; // as 6,1 was never released 7,1 is actually 6th generation
|
||||
|
||||
// Apple TV https://www.theiphonewiki.com/wiki/Apple_TV
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV1,1"]) return @"Apple TV 1G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3G"; // small, incremental update over 3,1
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4G";
|
||||
|
||||
// Simulator
|
||||
if ([modelIdentifier hasSuffix:@"86"] || [modelIdentifier isEqual:@"x86_64"])
|
||||
{
|
||||
BOOL smallerScreen = ([[UIScreen mainScreen] bounds].size.width < 768.0);
|
||||
return (smallerScreen ? @"iPhone Simulator" : @"iPad Simulator");
|
||||
}
|
||||
|
||||
return modelIdentifier;
|
||||
}
|
||||
|
||||
- (UIDeviceFamily) deviceFamily
|
||||
{
|
||||
NSString *modelIdentifier = [self modelNameForModelIdentifier:[self modelIdentifier]];
|
||||
if ([modelIdentifier hasPrefix:@"iPhone"]) return UIDeviceFamilyiPhone;
|
||||
if ([modelIdentifier hasPrefix:@"iPod"]) return UIDeviceFamilyiPod;
|
||||
if ([modelIdentifier hasPrefix:@"iPad"]) return UIDeviceFamilyiPad;
|
||||
if ([modelIdentifier hasPrefix:@"AppleTV"]) return UIDeviceFamilyAppleTV;
|
||||
return UIDeviceFamilyUnknown;
|
||||
}
|
||||
|
||||
- (UIDeviceGenerationModel) deviceGenerationModel
|
||||
{
|
||||
NSString *modelIdentifier = [self modelIdentifier];
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,1"]) return UIDeviceGenerationModeliPhone3G;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,2"]) return UIDeviceGenerationModeliPhone3G;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone2,1"]) return UIDeviceGenerationModeliPhone3GS;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,1"]) return UIDeviceGenerationModeliPhone4;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,2"]) return UIDeviceGenerationModeliPhone4;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,3"]) return UIDeviceGenerationModeliPhone4;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone4,1"]) return UIDeviceGenerationModeliPhone4S;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,1"]) return UIDeviceGenerationModeliPhone5;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,2"]) return UIDeviceGenerationModeliPhone5;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,3"]) return UIDeviceGenerationModeliPhone5C;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,4"]) return UIDeviceGenerationModeliPhone5C;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,1"]) return UIDeviceGenerationModeliPhone5S;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,2"]) return UIDeviceGenerationModeliPhone5S;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,1"]) return UIDeviceGenerationModeliPhone6Plus;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,2"]) return UIDeviceGenerationModeliPhone6;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,1"]) return UIDeviceGenerationModeliPhone6S;
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,2"]) return UIDeviceGenerationModeliPhone6SPlus;
|
||||
|
||||
// iPad http://theiphonewiki.com/wiki/IPad
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad1,1"]) return UIDeviceGenerationModeliPad1;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,1"]) return UIDeviceGenerationModeliPad2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,2"]) return UIDeviceGenerationModeliPad2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,3"]) return UIDeviceGenerationModeliPad2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,4"]) return UIDeviceGenerationModeliPad2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,1"]) return UIDeviceGenerationModeliPad3;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,2"]) return UIDeviceGenerationModeliPad3;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,3"]) return UIDeviceGenerationModeliPad3;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,4"]) return UIDeviceGenerationModeliPad4;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,5"]) return UIDeviceGenerationModeliPad4;
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,6"]) return UIDeviceGenerationModeliPad4;
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,1"]) return UIDeviceGenerationModeliPadAir;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,2"]) return UIDeviceGenerationModeliPadAir;
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,3"]) return UIDeviceGenerationModeliPadAir2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,4"]) return UIDeviceGenerationModeliPadAir2;
|
||||
|
||||
// iPad Mini http://theiphonewiki.com/wiki/IPad_mini
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,5"]) return UIDeviceGenerationModeliPadMini1;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,6"]) return UIDeviceGenerationModeliPadMini1;
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,7"]) return UIDeviceGenerationModeliPadMini1;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,4"]) return UIDeviceGenerationModeliPadMini2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,5"]) return UIDeviceGenerationModeliPadMini2;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,6"]) return UIDeviceGenerationModeliPadMini2; // TD-LTE model see https://support.apple.com/en-us/HT201471#iPad-mini2
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,7"]) return UIDeviceGenerationModeliPadMini3;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,8"]) return UIDeviceGenerationModeliPadMini3;
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,9"]) return UIDeviceGenerationModeliPadMini3;
|
||||
|
||||
// iPod http://theiphonewiki.com/wiki/IPod
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPod1,1"]) return UIDeviceGenerationModeliPod1;
|
||||
if ([modelIdentifier isEqualToString:@"iPod2,1"]) return UIDeviceGenerationModeliPod2;
|
||||
if ([modelIdentifier isEqualToString:@"iPod3,1"]) return UIDeviceGenerationModeliPod3;
|
||||
if ([modelIdentifier isEqualToString:@"iPod4,1"]) return UIDeviceGenerationModeliPod4;
|
||||
if ([modelIdentifier isEqualToString:@"iPod5,1"]) return UIDeviceGenerationModeliPod5;
|
||||
if ([modelIdentifier isEqualToString:@"iPod7,1"]) return UIDeviceGenerationModeliPod6; // as 6,1 was never released 7,1 is actually 6th generation
|
||||
|
||||
// Apple TV https://www.theiphonewiki.com/wiki/Apple_TV
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV1,1"]) return UIDeviceGenerationModelAppleTV1;
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV2,1"]) return UIDeviceGenerationModelAppleTV2;
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,1"]) return UIDeviceGenerationModelAppleTV3;
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,2"]) return UIDeviceGenerationModelAppleTV3_v2; // small, incremental update over 3,1
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV5,3"]) return UIDeviceGenerationModelAppleTV4;
|
||||
|
||||
if ([modelIdentifier hasSuffix:@"86"] || [modelIdentifier isEqual:@"x86_64"])
|
||||
{
|
||||
BOOL smallerScreen = ([[UIScreen mainScreen] bounds].size.width < 768.0);
|
||||
return (smallerScreen ? UIDeviceGenerationModeliPhoneSimulator : UIDeviceGenerationModeliPadSimulator);
|
||||
}
|
||||
return UIDeviceGenerationModelUnknown;
|
||||
}
|
||||
|
||||
- (NSString*) deviceGenerationModelString
|
||||
{
|
||||
NSString *modelIdentifier = [self modelIdentifier];
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (GSM Rev A)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
|
||||
if ([modelIdentifier isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
|
||||
|
||||
// iPad http://theiphonewiki.com/wiki/IPad
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad1,1"]) return @"iPad 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,1"]) return @"iPad 2 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,4"]) return @"iPad 2 (Rev A)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,1"]) return @"iPad 3 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,3"]) return @"iPad 3 (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,4"]) return @"iPad 4 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad3,6"]) return @"iPad 4 (Global)";
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,1"]) return @"iPad Air (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
|
||||
|
||||
// iPad Mini http://theiphonewiki.com/wiki/IPad_mini
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,5"]) return @"iPad mini 1G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,6"]) return @"iPad mini 1G (GSM)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad2,7"]) return @"iPad mini 1G (Global)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,6"]) return @"iPad mini 2G (Cellular)"; // TD-LTE model see https://support.apple.com/en-us/HT201471#iPad-mini2
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,7"]) return @"iPad mini 3G (Wi-Fi)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,8"]) return @"iPad mini 3G (Cellular)";
|
||||
if ([modelIdentifier isEqualToString:@"iPad4,9"]) return @"iPad mini 3G (Cellular)";
|
||||
|
||||
// iPod http://theiphonewiki.com/wiki/IPod
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"iPod1,1"]) return @"iPod touch 1G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod2,1"]) return @"iPod touch 2G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod3,1"]) return @"iPod touch 3G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod4,1"]) return @"iPod touch 4G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod5,1"]) return @"iPod touch 5G";
|
||||
if ([modelIdentifier isEqualToString:@"iPod7,1"]) return @"iPod touch 6G"; // as 6,1 was never released 7,1 is actually 6th generation
|
||||
|
||||
// Apple TV https://www.theiphonewiki.com/wiki/Apple_TV
|
||||
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV1,1"]) return @"Apple TV 1G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3G";
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3G"; // small, incremental update over 3,1
|
||||
if ([modelIdentifier isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4G"; // as 4,1 was never released, 5,1 is actually 4th generation
|
||||
|
||||
// Simulator
|
||||
if ([modelIdentifier hasSuffix:@"86"] || [modelIdentifier isEqual:@"x86_64"])
|
||||
{
|
||||
BOOL smallerScreen = ([[UIScreen mainScreen] bounds].size.width < 768.0);
|
||||
return (smallerScreen ? @"iPhone Simulator" : @"iPad Simulator");
|
||||
}
|
||||
|
||||
return modelIdentifier;
|
||||
}
|
||||
|
||||
- (UIDeviceModelInches) deviceInches {
|
||||
switch ([self deviceGenerationModel]) {
|
||||
case UIDeviceGenerationModeliPhone3G:
|
||||
case UIDeviceGenerationModeliPhone3GS:
|
||||
case UIDeviceGenerationModeliPhone4:
|
||||
case UIDeviceGenerationModeliPhone4S:{
|
||||
return UIDeviceModelInches35;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPhone5:
|
||||
case UIDeviceGenerationModeliPhone5C:
|
||||
case UIDeviceGenerationModeliPhone5S:{
|
||||
return UIDeviceModelInches4;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPhone6:
|
||||
case UIDeviceGenerationModeliPhone6S:{
|
||||
return UIDeviceModelInches47;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPhone6Plus:
|
||||
case UIDeviceGenerationModeliPhone6SPlus:{
|
||||
return UIDeviceModelInches55;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPad1:
|
||||
case UIDeviceGenerationModeliPad2:
|
||||
case UIDeviceGenerationModeliPad3:
|
||||
case UIDeviceGenerationModeliPad4:
|
||||
case UIDeviceGenerationModeliPadAir:
|
||||
case UIDeviceGenerationModeliPadAir2:{
|
||||
|
||||
return UIDeviceModelInches97;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPadMini1:
|
||||
case UIDeviceGenerationModeliPadMini2:
|
||||
case UIDeviceGenerationModeliPadMini3:
|
||||
case UIDeviceGenerationModeliPadMini4:
|
||||
{
|
||||
return UIDeviceModelInches79;
|
||||
}
|
||||
break;
|
||||
case UIDeviceGenerationModeliPadPro:{
|
||||
return UIDeviceModelInches129;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return UIDeviceModelInchesUnKnown;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
Reference in new issue
Block a user