iOS设备型号获取(更新到iPhone SE 2) 和iOS13状态栏高度获取

今天整理项目,发现之前在网上拷贝的获取设备型号,然后在根据分辨率给设备分类并保存型号的代码if语句太多,看着烦,就处理了下。

iOS13的状态高度获取

#define kStatusBarHeight     (@available(iOS 13.0, *)?[UIApplication sharedApplication].windows[0].windowScene.statusBarManager.statusBarFrame.size.height:[[UIApplication sharedApplication] statusBarFrame].size.height)

设备型号获取
创建一个设备列表plist文件
你可以通过右键这个文件点击"Open As"选择Source Code 用代码的方式打开,拷贝下面这些代码进去覆盖就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>display</key>
    <dict>
        <key>Simulator</key>
        <dict>
            <key>2688</key>
            <string>iPhone XS Max</string>
            <key>2436</key>
            <string>iPhone X</string>
            <key>1792</key>
            <string>iPhone XR</string>
            <key>2208</key>
            <string>iPhone 6 Plus</string>
            <key>1334</key>
            <string>iPhone 6</string>
            <key>1136</key>
            <string>iPhone 5</string>
            <key>960</key>
            <string>iPhone 4</string>
            <key>1024</key>
            <string>iPad</string>
            <key>2048</key>
            <string>iPad</string>
            <key>2160</key>
            <string>iPad</string>
            <key>2224</key>
            <string>iPad</string>
            <key>2388</key>
            <string>iPad</string>
            <key>2732</key>
            <string>iPad</string>
        </dict>
        <key>Device</key>
        <dict>
            <key>iPhone 4</key>
            <string>iPhone 4</string>
            <key>iPhone 4S</key>
            <string>iPhone 4</string>
            <key>iPhone 5</key>
            <string>iPhone 5</string>
            <key>iPhone 5c</key>
            <string>iPhone 5</string>
            <key>iPhone 5s</key>
            <string>iPhone 5</string>
            <key>iPod Touch 5G</key>
            <string>iPod Touch</string>
            <key>iPod Touch 6G</key>
            <string>iPod Touch</string>
            <key>iPhone SE</key>
            <string>iPhone 5</string>
            <key>iPhone SE 2</key>
            <string>iPhone 5</string>
            <key>iPhone 6</key>
            <string>iPhone 6</string>
            <key>iPhone 6s</key>
            <string>iPhone 6</string>
            <key>iPhone 7</key>
            <string>iPhone 6</string>
            <key>iPhone 8</key>
            <string>iPhone 6</string>
            <key>iPhone 6 Plus</key>
            <string>iPhone 6 Plus</string>
            <key>iPhone 6s Plus</key>
            <string>iPhone 6 Plus</string>
            <key>iPhone 7 Plus</key>
            <string>iPhone 6 Plus</string>
            <key>iPhone 8 Plus</key>
            <string>iPhone 6 Plus</string>
            <key>iPhone X</key>
            <string>iPhone X</string>
            <key>iPhone XS</key>
            <string>iPhone X</string>
            <key>iPhone XS Max</key>
            <string>iPhone X Max</string>
            <key>iPhone XR</key>
            <string>iPhone XR</string>
            <key>iPhone 11</key>
            <string>iPhone XR</string>
            <key>iPhone 11 Pro</key>
            <string>iPhone X</string>
            <key>iPhone 11 Pro Max</key>
            <string>iPhone X Max</string>
            <key>iPad</key>
            <string>iPad</string>
            <key>iPad 3G</key>
            <string>iPad</string>
            <key>iPad 2</key>
            <string>iPad</string>
            <key>iPad Mini</key>
            <string>iPad</string>
            <key>iPad 3</key>
            <string>iPad</string>
            <key>iPad 4</key>
            <string>iPad</string>
            <key>iPad Air</key>
            <string>iPad</string>
            <key>iPad Mini 2</key>
            <string>iPad</string>
            <key>iPad Mini 3</key>
            <string>iPad</string>
            <key>iPad Mini 4</key>
            <string>iPad</string>
            <key>iPad Air 2</key>
            <string>iPad</string>
            <key>iPad Pro 9.7</key>
            <string>iPad</string>
            <key>iPad Pro 12.9</key>
            <string>iPad</string>
            <key>iPad 5</key>
            <string>iPad</string>
            <key>iPad Pro 12.9 inch 2nd gen</key>
            <string>iPad</string>
            <key>iPad Pro 10.5 inch</key>
            <string>iPad</string>
            <key>iPad 6</key>
            <string>iPad</string>
            <key>iPad 7</key>
            <string>iPad</string>
            <key>iPad Pro 11-inch</key>
            <string>iPad</string>
            <key>iPad Pro 12.9-inch 3rd gen</key>
            <string>iPad</string>
            <key>iPad Pro 11-inch 2nd gen</key>
            <string>iPad</string>
            <key>iPad Pro 12.9-inch 4th gen</key>
            <string>iPad</string>
            <key>iPad Mini 5</key>
            <string>iPad</string>
            <key>iPad Air 3</key>
            <string>iPad</string>
            <key>iPod Touch 1G</key>
            <string>iPod Touch</string>
            <key>iPod Touch 2G</key>
            <string>iPod Touch</string>
            <key>iPod Touch 3G</key>
            <string>iPod Touch</string>
            <key>iPod Touch 4G</key>
            <string>iPod Touch</string>
            <key>iPod Touch 7G</key>
            <string>iPod Touch</string>
        </dict>
    </dict>
    <key>model</key>
    <dict>
        <key>iPhone1,1</key>
        <string>iPhone</string>
        <key>iPhone1,2</key>
        <string>iPhone 3G</string>
        <key>iPhone2,1</key>
        <string>iPhone 3GS</string>
        <key>iPhone3,1</key>
        <string>iPhone 4</string>
        <key>iPhone3,2</key>
        <string>iPhone 4</string>
        <key>iPhone3,3</key>
        <string>iPhone 4</string>
        <key>iPhone4,1</key>
        <string>iPhone 4S</string>
        <key>iPhone5,1</key>
        <string>iPhone 5</string>
        <key>iPhone5,2</key>
        <string>iPhone 5</string>
        <key>iPhone5,3</key>
        <string>iPhone 5c</string>
        <key>iPhone5,4</key>
        <string>iPhone 5c</string>
        <key>iPhone6,1</key>
        <string>iPhone 5s</string>
        <key>iPhone6,2</key>
        <string>iPhone 5s</string>
        <key>iPhone7,1</key>
        <string>iPhone 6 Plus</string>
        <key>iPhone7,2</key>
        <string>iPhone 6</string>
        <key>iPhone8,1</key>
        <string>iPhone 6s</string>
        <key>iPhone8,2</key>
        <string>iPhone 6s Plus</string>
        <key>iPhone8,4</key>
        <string>iPhone SE</string>
        <key>iPhone9,1</key>
        <string>iPhone 7</string>
        <key>iPhone9,2</key>
        <string>iPhone 7 Plus</string>
        <key>iPhone9,3</key>
        <string>iPhone 7</string>
        <key>iPhone9,4</key>
        <string>iPhone 7 Plus</string>
        <key>iPhone10,1</key>
        <string>iPhone 8</string>
        <key>iPhone10,2</key>
        <string>iPhone 8 Plus</string>
        <key>iPhone10,3</key>
        <string>iPhone X</string>
        <key>iPhone10,4</key>
        <string>iPhone 8</string>
        <key>iPhone10,5</key>
        <string>iPhone 8 Plus</string>
        <key>iPhone10,6</key>
        <string>iPhone X</string>
        <key>iPhone11,2</key>
        <string>iPhone XS</string>
        <key>iPhone11,4</key>
        <string>iPhone XS Max</string>
        <key>iPhone11,6</key>
        <string>iPhone XS Max</string>
        <key>iPhone11,8</key>
        <string>iPhone XR</string>
        <key>iPhone12,1</key>
        <string>iPhone 11</string>
        <key>iPhone12,3</key>
        <string>iPhone 11 Pro</string>
        <key>iPhone12,5</key>
        <string>iPhone 11 Pro Max</string>
        <key>iPhone12,8</key>
        <string>iPhone SE 2</string>
        <key>i386</key>
        <string>Simulator</string>
        <key>x86_64</key>
        <string>Simulator</string>
        <key>iPod1,1</key>
        <string>iPod Touch 1G</string>
        <key>iPod2,1</key>
        <string>iPod Touch 2G</string>
        <key>iPod3,1</key>
        <string>iPod Touch 3G</string>
        <key>iPod4,1</key>
        <string>iPod Touch 4G</string>
        <key>iPod5,1</key>
        <string>iPod Touch 5G</string>
        <key>iPod7,1</key>
        <string>iPod Touch 6G</string>
        <key>iPod9,1</key>
        <string>iPod Touch 7G</string>
        <key>iPad1,1</key>
        <string>iPad</string>
        <key>iPad1,2</key>
        <string>iPad 3G</string>
        <key>iPad2,1</key>
        <string>iPad 2</string>
        <key>iPad2,2</key>
        <string>iPad 2</string>
        <key>iPad2,3</key>
        <string>iPad 2</string>
        <key>iPad2,4</key>
        <string>iPad 2</string>
        <key>iPad2,5</key>
        <string>iPad Mini</string>
        <key>iPad2,6</key>
        <string>iPad Mini</string>
        <key>iPad2,7</key>
        <string>iPad Mini</string>
        <key>iPad3,1</key>
        <string>iPad 3</string>
        <key>iPad3,2</key>
        <string>iPad 3</string>
        <key>iPad3,3</key>
        <string>iPad 3</string>
        <key>iPad3,4</key>
        <string>iPad 4</string>
        <key>iPad3,5</key>
        <string>iPad 4</string>
        <key>iPad3,6</key>
        <string>iPad 4</string>
        <key>iPad4,1</key>
        <string>iPad Air</string>
        <key>iPad4,2</key>
        <string>iPad Air</string>
        <key>iPad4,4</key>
        <string>iPad Mini 2</string>
        <key>iPad4,5</key>
        <string>iPad Mini 2</string>
        <key>iPad4,6</key>
        <string>iPad Mini 2</string>
        <key>iPad4,7</key>
        <string>iPad Mini 3</string>
        <key>iPad4,8</key>
        <string>iPad Mini 3</string>
        <key>iPad4,9</key>
        <string>iPad Mini 3</string>
        <key>iPad5,1</key>
        <string>iPad Mini 4</string>
        <key>iPad5,2</key>
        <string>iPad Mini 4</string>
        <key>iPad5,3</key>
        <string>iPad Air 2</string>
        <key>iPad5,4</key>
        <string>iPad Air 2</string>
        <key>iPad6,3</key>
        <string>iPad Pro 9.7</string>
        <key>iPad6,4</key>
        <string>iPad Pro 9.7</string>
        <key>iPad6,7</key>
        <string>iPad Pro 12.9</string>
        <key>iPad6,8</key>
        <string>iPad Pro 12.9</string>
        <key>iPad6,11</key>
        <string>iPad 5</string>
        <key>iPad6,12</key>
        <string>iPad 5</string>
        <key>iPad7,1</key>
        <string>iPad Pro 12.9 inch 2nd gen</string>
        <key>iPad7,2</key>
        <string>iPad Pro 12.9 inch 2nd gen</string>
        <key>iPad7,3</key>
        <string>iPad Pro 10.5 inch</string>
        <key>iPad7,4</key>
        <string>iPad Pro 10.5 inch</string>
        <key>iPad7,5</key>
        <string>iPad 6</string>
        <key>iPad7,6</key>
        <string>iPad 6</string>
        <key>iPad7,11</key>
        <string>iPad 7</string>
        <key>iPad7,12</key>
        <string>iPad 7</string>
        <key>iPad8,1</key>
        <string>iPad Pro 11-inch</string>
        <key>iPad8,2</key>
        <string>iPad Pro 11-inch</string>
        <key>iPad8,3</key>
        <string>iPad Pro 11-inch</string>
        <key>iPad8,4</key>
        <string>iPad Pro 11-inch</string>
        <key>iPad8,5</key>
        <string>iPad Pro 12.9-inch 3rd gen</string>
        <key>iPad8,6</key>
        <string>iPad Pro 12.9-inch 3rd gen</string>
        <key>iPad8,7</key>
        <string>iPad Pro 12.9-inch 3rd gen</string>
        <key>iPad8,8</key>
        <string>iPad Pro 12.9-inch 3rd gen</string>
        <key>iPad8,9</key>
        <string>iPad Pro 11-inch 2nd gen</string>
        <key>iPad8,10</key>
        <string>iPad Pro 11-inch 2nd gen</string>
        <key>iPad8,11</key>
        <string>iPad Pro 12.9-inch 4th gen</string>
        <key>iPad8,12</key>
        <string>iiPad Pro 12.9-inch 4th gen</string>
        <key>iPad11,1</key>
        <string>iPad Mini 5</string>
        <key>iPad11,2</key>
        <string>iPad Mini 5</string>
        <key>iPad11,3</key>
        <string>iPad Air 3</string>
        <key>iPad11,4</key>
        <string>iPad Air 3</string>
    </dict>
</dict>
</plist>

通过拿到的设备类型说明字符去匹配就可以拿到型号,然后你也可以根据获得的设备型号再去匹配拿到同分辨率设备方便你不用写太多设备去判断分辨率。

下面这些则是具体的实现,你要是没空自己写就可以看看

获取当前型号类型,也就是 iPhone11,8这串字符串 。
记得导入头文件

#import <sys/sysctl.h>


+ (NSString *)getCurrentDeviceModelDescription{
    int mib[2];
    size_t len;
    char *machine;
    
    mib[0] = CTL_HW;
    mib[1] = HW_MACHINE;
    sysctl(mib, 2, NULL, &len, NULL, 0);
    machine = malloc(len);
    sysctl(mib, 2, machine, &len, NULL, 0);
    
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);
    return platform;
}

调用 getCurrentDeviceModelDescription 获取到设备的类型说明
把plist文件数据拿出来匹配到具体的设备型号

+ (NSString *)getCurrentDeviceModel{
    NSString *platform = [Tools+DeviceCategory getCurrentDeviceModelDescription];
    NSDictionary * dataDict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DeviceList"ofType:@"plist"]];
    NSDictionary * modelDic = dataDict[@"model"];
    if ([modelDic.allKeys containsObject: platform]) {
        return modelDic[platform];
    }
    return platform;
}

+ (void)saveDeviceInfo {
    NSDictionary * dataDict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DeviceList"ofType:@"plist"]];
    NSString *model = [self getCurrentDeviceModel];
    NSString *displayModel = model;
    NSDictionary * displayDic = dataDict[@"display"];
    if ([model isEqualToString:@"Simulator"])
    {
        NSDictionary *simulatorDic = displayDic[model];
        NSString *simulatorHeightStr = [NSString stringWithFormat:@"%.f",[UIScreen mainScreen].currentMode.size.height];
        if ([simulatorDic.allKeys containsObject:simulatorHeightStr])
        {
            displayModel = simulatorDic[simulatorHeightStr];
        }
    }
    else
    {
        NSDictionary *deviceDic = displayDic[@"Device"];
        if ([deviceDic.allKeys containsObject: model])
        {
            displayModel = deviceDic[model];
        }
    }
    [[NSUserDefaults standardUserDefaults] setObject:displayModel forKey:@"DeviceName"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336