• ios 获得设备型号方法


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

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

    #include "sys/sysctl.h"

    + (NSString*)getMachineName{
        size_t size;
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        char *name = malloc(size);
        sysctlbyname("hw.machine", name, &size, NULL, 0);
        
        NSString *platform = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
        
        free(name);
        
        if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G (A1203)";
        if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G (A1241/A1324)";
        if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS (A1303/A1325)";
        if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";
        if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";
        if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";
        if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S (A1387/A1431)";
        if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";
        if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";
        if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (A1456/A1532)";
        if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";
        if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";
        if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";
        if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";
        if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";
        
        if ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch 1G (A1213)";
        if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G (A1288)";
        if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G (A1318)";
        if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G (A1367)";
        if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G (A1421/A1509)";
        
        if ([platform isEqualToString:@"iPad1,1"])   return @"iPad 1G (A1219/A1337)";
        
        if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2 (A1395)";
        if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2 (A1396)";
        if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2 (A1397)";
        if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2 (A1395+New Chip)";
        if ([platform isEqualToString:@"iPad2,5"])   return @"iPad Mini 1G (A1432)";
        if ([platform isEqualToString:@"iPad2,6"])   return @"iPad Mini 1G (A1454)";
        if ([platform isEqualToString:@"iPad2,7"])   return @"iPad Mini 1G (A1455)";
        
        if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3 (A1416)";
        if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3 (A1403)";
        if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3 (A1430)";
        if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4 (A1458)";
        if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4 (A1459)";
        if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4 (A1460)";
        
        if ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air (A1474)";
        if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air (A1475)";
        if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air (A1476)";
        if ([platform isEqualToString:@"iPad4,4"])   return @"iPad Mini 2G (A1489)";
        if ([platform isEqualToString:@"iPad4,5"])   return @"iPad Mini 2G (A1490)";
        if ([platform isEqualToString:@"iPad4,6"])   return @"iPad Mini 2G (A1491)";
        
        if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
        if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
        
        return platform;
    }
  • 相关阅读:
    vscode 快捷键
    Nest 中在当前模块使用其他模块 service 的方式
    Elasticsearch:应用 Nodejs 来访问 Elasticsearch【转载】
    开始使用 Elasticsearch (1)[转载]
    SVO详细解读
    深度滤波器详细解读
    Google Cardboard的九轴融合算法——基于李群的扩展卡尔曼滤波
    相机IMU融合四部曲(三):MSF详细解读与使用
    相机IMU融合四部曲(二):误差状态四元数详细解读
    相机IMU融合四部曲(一):D-LG-EKF详细解读
  • 原文地址:https://www.cnblogs.com/breezemist/p/4708464.html
Copyright © 2020-2023  润新知