【Objective-C】iPhone・iPad・iPodなどの機種判定し処理を振り分ける方法【iOS9】

2020年8月29日

iPhone・iPad・iPodなどの機種の判定方法は2種類あります

1.iPhone・iPad・iPodなどをざっくり判定

NSString *modelName = [[UIDevice currentDevice] model];
if ([modelName isEqualToString:@"iPhone"]) {
    // iPhoneの場合
}
else if ([modelName isEqualToString:@"iPod touch"]) {
    // iPod touchの場合
}
else if ([modelName isEqualToString:@"iPad"]) {
    // iPadの場合
}
else if ([modelName isEqualToString:@"iPhone Simulator"]) {
    //iPhone Simulatorの場合
}

UIDeviceが取れるモデル名を使用した判定方法です。
Swiftと違ってiPodやシュミレーターの判定が可能です。

より細かい判定をしたい場合は以下をお試しください。

2.iPhone・iPadなどを細かく判定

switch ((int)([UIScreen mainScreen].nativeBounds.size.height)) {
case 480:
    // iPhone
    // iPhone 3G
    // iPhone 3GS
    break;
case 960:
    // iPhone 4
    // iPhone 4S
    break;
case 1136:
    // iPhone 5
    // iPhone 5s
    // iPhone 5c
    // iPhone SE
    break;
case 1334:
    // iPhone 6
    // iPhone 6s
    // iPhone 7
    // iPhone 8
    break;
case 2208:
    // iPhone 6 Plus
    // iPhone 6s Plus
    // iPhone 7 Plus
    // iPhone 8 Plus
    break;
case 2436:
    //iPhone X
    break;
default:
    break;
}

// iPadの機種判定
switch ((int)([UIScreen mainScreen].nativeBounds.size.height)) {
case 1024:
    // iPad Mini
    // iPad
    // iPad 2
    break;
case 2048:
    // iPad Mini 2
    // iPad Mini 3
    // iPad Mini 4
    // iPad 3
    // iPad 4
    // iPad Air
    // iPad Air 2
    // iPad Pro 9.7
    break;
case 2224:
    // iPad Pro 10.5
    break;
case 2732:
    // iPad Pro 12.9
    break;
default:
    break;
}

画面サイズを利用した判定方法です。
iPod Touchの判定などは無くなる代わりに、iPhone8やiPhone8 Plus、iPhoneXの判定などが可能です。 iPadもMiniやAir、Proの判定が可能です。

ざっくり判定でいくか、細かい判定でいくかは用途に合わせて選択するといいでしょう。