以前用UIScreen 的大小来判断设备类型,现在有了iphone6 和 iphone6 plus, 这种方法不能用了。因为当程序不提供相应的启动图片时,系统会把程序运行在320*568的size下,并把程序界面等比扩大,这样UIScreen 的大小就不能反映真实设备的分辨率了!见下面的截图

用以下方法解决,注意加头文件

#include "sys/sysctl.h"

  1. + (NSString*)getMachineName{
  2. size_t size;
  3. sysctlbyname("hw.machine", NULL, &size, NULL, );
  4. char *name = malloc(size);
  5. sysctlbyname("hw.machine", name, &size, NULL, );
  6.  
  7. NSString *platform = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
  8.  
  9. free(name);
  10.  
  11. if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G (A1203)";
  12. if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G (A1241/A1324)";
  13. if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS (A1303/A1325)";
  14. if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";
  15. if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";
  16. if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";
  17. if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S (A1387/A1431)";
  18. if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";
  19. if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";
  20. if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (A1456/A1532)";
  21. if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";
  22. if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";
  23. if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";
  24. if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";
  25. if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";
  26.  
  27. if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G (A1213)";
  28. if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G (A1288)";
  29. if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G (A1318)";
  30. if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G (A1367)";
  31. if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G (A1421/A1509)";
  32.  
  33. if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1G (A1219/A1337)";
  34.  
  35. if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (A1395)";
  36. if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (A1396)";
  37. if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (A1397)";
  38. if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (A1395+New Chip)";
  39. if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini 1G (A1432)";
  40. if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini 1G (A1454)";
  41. if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini 1G (A1455)";
  42.  
  43. if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (A1416)";
  44. if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (A1403)";
  45. if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (A1430)";
  46. if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (A1458)";
  47. if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (A1459)";
  48. if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (A1460)";
  49.  
  50. if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (A1474)";
  51. if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (A1475)";
  52. if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air (A1476)";
  53. if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G (A1489)";
  54. if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G (A1490)";
  55. if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G (A1491)";
  56.  
  57. if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
  58. if ([platform isEqualToString:@"x86_64"]) return @"iPhone Simulator";
  59.  
  60. return platform;
  61. }

ios 获得设备型号方法的更多相关文章

  1. IOS 获取最新设备型号方法

    1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...

  2. iOS获取设备型号、装置类型等信息

    iOS获取设备型号.设备类型等信息 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然而他们都陆陆续续倒在了苹果的门下.苹果目前提供了2个方法供App获取设 ...

  3. iOS获取设备型号和App版本号等信息(OC+Swift)

    iOS获取设备型号和App版本号等信息(OC+Swift) 字数1687 阅读382 评论3 喜欢10 好久没有写过博客了,因为中间工作比较忙,然后有些个人事情所以耽误了.但是之前写的博客还一直有人来 ...

  4. iOS获取设备型号的方法

    1. [UIDevice currentDevice].model   自己写的看只抓到模拟器和iPhone.暂时不推荐. 2.自己写的找的方法再添加.直接  NSString * deviceMod ...

  5. iOS获取设备型号

    导入头文件 #include <sys/types.h> #include <sys/sysctl.h> 直接调用 //获得设备型号 + (NSString *)getCurr ...

  6. iOS 获取设备型号以及IP地址

    首先导入四个头文件 #include <sys/types.h> #include <sys/sysctl.h> #include <ifaddrs.h> #inc ...

  7. iOS 获取设备型号 ip6更新

    //获得设备型号 + (NSString *)getCurrentDeviceModel:(UIViewController *)controller { ]; size_t len; char *m ...

  8. (转)iOS获取设备型号

    //获得设备型号 + (NSString *)getCurrentDeviceModel:(UIViewController *)controller { ]; size_t len; char *m ...

  9. iOS获取设备型号、设备类型等信息

    摘自 :http://www.mamicode.com/info-detail-1165460.html 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然 ...

随机推荐

  1. Promise编程基础

    (一) Promise基础     所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消 ...

  2. 用HTML/JS/PHP方式实现页面延时跳转

    WEB开发中经常会遇到页面跳转或延时跳转的需求,掌握各种页面跳转方式非常必要. 以下是我总结有用HTML/JS/PHP三类方式实现跳转的方法,例子皆为三秒后跳转到index.php 页面. 1,HTM ...

  3. MySQL中MAX函数与Group By一起使用的注意事项(转)

    mysql> select * from test; +----+-------+------+-------+ | id | name | age | class | +----+------ ...

  4. virtualBox切换到无缝模式后,如何调出菜单

    host+c host就是指右边的那个ctrl键

  5. java项目命名规范

    一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{} 4. 变量 ...

  6. django学习<二>:连接数据库

    发现假如没有很迫切的实际需求或者外界的压力的话,我这种人就很容易偷懒,之前看了一篇比较权威的谈django的文章,里面列举支持的数据库只有四种, 可是我熟悉的数据库只有sqlserver,然后就又怠工 ...

  7. 自己用WordPress搭了个站点

    这周买了台阿里云,用wordpress搭了个自己的站点,折腾了几天. 网站的网址是 http://www.smarteyeball.com/ ,取名慧眼网,宗旨是让大家发现新世界.

  8. 清北学堂模拟day6 花

    [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的买花的方案?答案可能很大,输出答案mod p的值. ...

  9. Vim编辑器运用的五个技巧

    导读 如今 Vim 是每个人最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.大多数人只是熟悉Vim的最最基本的操作,只能在终端使用 Vim 修改文本,但是它并没有任何一个我想 ...

  10. Longest Common Substring

    Given two strings, find the longest common substring. Return the length of it. Example Given A = &qu ...