判断iOS设备类型
2014-02-13 13:54
274 查看
这是从网上搜集来的,原出处不详。
还是看这个吧:
#import "sys/utsname.h"
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceString = [NSStringstringWithCString:systemInfo.machineencoding:NSUTF8StringEncoding];
if ([deviceString
isEqualToString:@"iPhone1,1"])
return @"iPhone 1G";
if ([deviceString
isEqualToString:@"iPhone1,2"])
return @"iPhone 3G";
if ([deviceString
isEqualToString:@"iPhone2,1"])
return @"iPhone 3GS";
if ([deviceString
isEqualToString:@"iPhone3,1"])
return @"iPhone 4";
if ([deviceString isEqualToString:@"iPhone3,3"])
return@"Verizon iPhone 4";
if ([deviceString
isEqualToString:@"iPhone4,1"])
return @"iPhone 4S";
if ([deviceString isEqualToString:@"iPhone5,1"]) return@"iPhone
5 (GSM)";
if ([deviceString isEqualToString:@"iPhone5,2"])
return@"iPhone 5 (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone5,3"])
return@"iPhone 5c (GSM)";
if ([deviceString isEqualToString:@"iPhone5,4"])
return@"iPhone 5c (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone6,1"])
return@"iPhone 5s (GSM)";
if ([deviceString isEqualToString:@"iPhone6,2"])
return@"iPhone 5s (GSM+CDMA)";
if ([deviceStringisEqualToString:@"iPod1,1"])
return@"iPod Touch 1G";
if ([deviceStringisEqualToString:@"iPod2,1"])
return@"iPod Touch 2G";
if ([deviceStringisEqualToString:@"iPod3,1"])
return@"iPod Touch 3G";
if ([deviceString
isEqualToString:@"iPod4,1"])
return @"iPod Touch 4G";
if ([deviceString
isEqualToString:@"iPod5,1"])
return @"iPod Touch 5G";
if ([deviceString
isEqualToString:@"iPad1,1"])
return @"iPad";
if ([deviceString
isEqualToString:@"iPad2,1"])
return @"iPad 2 (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,2"])
return @"iPad 2 (GSM)";
if ([deviceString
isEqualToString:@"iPad2,3"])
return @"iPad 2 (CDMA)";
if ([deviceString
isEqualToString:@"iPad2,4"])
return @"iPad 2 (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,5"])
return @"iPad Mini (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,6"])
return @"iPad Mini (GSM)";
if ([deviceString isEqualToString:@"iPad2,7"])
return@"iPad Mini (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad3,1"])
return @"iPad 3 (WiFi)";
if ([deviceString
isEqualToString:@"iPad3,2"])
return @"iPad 3 (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad3,3"])
return @"iPad 3 (GSM)";
if ([deviceString
isEqualToString:@"iPad3,4"])
return @"iPad 4 (WiFi)";
if ([deviceString
isEqualToString:@"iPad3,5"])
return @"iPad 4 (GSM)";
if ([deviceString
isEqualToString:@"iPad3,6"])
return @"iPad 4 (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad4,1"])
return @"iPad Air (WiFi)";
if ([deviceString isEqualToString:@"iPad4,2"])
return@"iPad Air (Cellular)";
if ([deviceString
isEqualToString:@"i386"])
return @"Simulator";
if ([deviceString
isEqualToString:@"x86_64"])
return @"Simulator";
-----------------------------------
1, 简单的做法
1.
用[UIDevicecurrentDevice].model,这个返回的是一个NSString,你可以做如下判断就能知道设备是iPad还是iPhone.
if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location!= NSNotFound) {
NSLog(@"Thisis an iPad!");
}
2. 用UI_USER_INTERFACE_IDIOM()方法,这是系统定义的一条宏。使用方法也很简单。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
NSLog(@"Thisis an iPad!");
}
不过我在使用第二种方法时发现,在Xcode4中,在项目的Summary页里必须将设备类型改为Universal才能生效。要不然就会一直返回为iPhone。所以,如果你的应用不需要设置成Universal,还是用第一种方法吧。
2, 使用宏定义
3,
网上还有一种方法:
还是看这个吧:
#import "sys/utsname.h"
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceString = [NSStringstringWithCString:systemInfo.machineencoding:NSUTF8StringEncoding];
if ([deviceString
isEqualToString:@"iPhone1,1"])
return @"iPhone 1G";
if ([deviceString
isEqualToString:@"iPhone1,2"])
return @"iPhone 3G";
if ([deviceString
isEqualToString:@"iPhone2,1"])
return @"iPhone 3GS";
if ([deviceString
isEqualToString:@"iPhone3,1"])
return @"iPhone 4";
if ([deviceString isEqualToString:@"iPhone3,3"])
return@"Verizon iPhone 4";
if ([deviceString
isEqualToString:@"iPhone4,1"])
return @"iPhone 4S";
if ([deviceString isEqualToString:@"iPhone5,1"]) return@"iPhone
5 (GSM)";
if ([deviceString isEqualToString:@"iPhone5,2"])
return@"iPhone 5 (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone5,3"])
return@"iPhone 5c (GSM)";
if ([deviceString isEqualToString:@"iPhone5,4"])
return@"iPhone 5c (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone6,1"])
return@"iPhone 5s (GSM)";
if ([deviceString isEqualToString:@"iPhone6,2"])
return@"iPhone 5s (GSM+CDMA)";
if ([deviceStringisEqualToString:@"iPod1,1"])
return@"iPod Touch 1G";
if ([deviceStringisEqualToString:@"iPod2,1"])
return@"iPod Touch 2G";
if ([deviceStringisEqualToString:@"iPod3,1"])
return@"iPod Touch 3G";
if ([deviceString
isEqualToString:@"iPod4,1"])
return @"iPod Touch 4G";
if ([deviceString
isEqualToString:@"iPod5,1"])
return @"iPod Touch 5G";
if ([deviceString
isEqualToString:@"iPad1,1"])
return @"iPad";
if ([deviceString
isEqualToString:@"iPad2,1"])
return @"iPad 2 (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,2"])
return @"iPad 2 (GSM)";
if ([deviceString
isEqualToString:@"iPad2,3"])
return @"iPad 2 (CDMA)";
if ([deviceString
isEqualToString:@"iPad2,4"])
return @"iPad 2 (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,5"])
return @"iPad Mini (WiFi)";
if ([deviceString
isEqualToString:@"iPad2,6"])
return @"iPad Mini (GSM)";
if ([deviceString isEqualToString:@"iPad2,7"])
return@"iPad Mini (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad3,1"])
return @"iPad 3 (WiFi)";
if ([deviceString
isEqualToString:@"iPad3,2"])
return @"iPad 3 (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad3,3"])
return @"iPad 3 (GSM)";
if ([deviceString
isEqualToString:@"iPad3,4"])
return @"iPad 4 (WiFi)";
if ([deviceString
isEqualToString:@"iPad3,5"])
return @"iPad 4 (GSM)";
if ([deviceString
isEqualToString:@"iPad3,6"])
return @"iPad 4 (GSM+CDMA)";
if ([deviceString
isEqualToString:@"iPad4,1"])
return @"iPad Air (WiFi)";
if ([deviceString isEqualToString:@"iPad4,2"])
return@"iPad Air (Cellular)";
if ([deviceString
isEqualToString:@"i386"])
return @"Simulator";
if ([deviceString
isEqualToString:@"x86_64"])
return @"Simulator";
-----------------------------------
1, 简单的做法
1.
用[UIDevicecurrentDevice].model,这个返回的是一个NSString,你可以做如下判断就能知道设备是iPad还是iPhone.
if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location!= NSNotFound) {
NSLog(@"Thisis an iPad!");
}
2. 用UI_USER_INTERFACE_IDIOM()方法,这是系统定义的一条宏。使用方法也很简单。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
NSLog(@"Thisis an iPad!");
}
不过我在使用第二种方法时发现,在Xcode4中,在项目的Summary页里必须将设备类型改为Universal才能生效。要不然就会一直返回为iPhone。所以,如果你的应用不需要设置成Universal,还是用第一种方法吧。
2, 使用宏定义
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) if(iPhone5){ /*代码操作*/ }else{ /*代码操作*/ } if([ [ UIDevice currentDevice ] userInterfaceIdiom ] == UIUserInterfaceIdiomPhone ){ //IPhone设备 }else{ //ipad设备 }
3,
网上还有一种方法:
+ (NSString*)deviceString { // 需要#import "sys/utsname.h" struct utsname systemInfo; uname(&systemInfo); NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; if ([deviceString isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; if ([deviceString isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; if ([deviceString isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5"; if ([deviceString isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4"; if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad"; if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; if ([deviceString isEqualToString:@"i386"]) return @"Simulator"; if ([deviceString isEqualToString:@"x86_64"]) return @"Simulator"; NSLog(@"NOTE: Unknown device type: %@", deviceString); return deviceString; }
相关文章推荐
- 如何判断ios设备类型
- iOS 设备类型和版本判断
- ios判断当前设备类型
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- iOS 设备类型和版本判断
- ios开发之--判断当前设备的类型
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- iOS : 判断运行设备类型是否是iPad
- iOS系统中判断设备类型
- 如何判断ios设备类型
- 判断iOS设备类型的方法
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- 判断iOS设备具体的类型
- IOS代码判断设备类型
- 如何判断ios设备类型
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- IOS代码判断设备类型
- JavaScript——判断手机设备类型(ios/android)
- iOS中判断设备类型的方法