您的位置:首页 > 移动开发 > IOS开发

判断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, 使用宏定义

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: