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

2020年8月27日

iPhoneやiPadなどの機種を判定する方法は2種類あります。

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

if UIDevice.current.userInterfaceIdiom == .phone {
    // iPhone
}
else if UIDevice.current.userInterfaceIdiom == .pad {
    // iPad
}
else if UIDevice.current.userInterfaceIdiom == .tv {
    // AppleTV
}
else if UIDevice.current.userInterfaceIdiom == .carPlay {
    // CarPlay
}
else {
    // それ以外、iPod Touchなど?
}

UIDeviceのuserInterfaceIdiomを使用した判定方法です。
iphone、ipad、AppleTV、carplayの4種類しか判定できません。

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

2.iPhone・iPadをより細かく判定

// iPhoneの機種判定
switch (UIScreen.main.nativeBounds.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 (UIScreen.main.nativeBounds.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
}

画面サイズを利用した判定方法です。
先ほどと違い、iphone8やiphone8 Plus、iphone Xの判定までできるようになっています。

userInterfaceIdiomの方はざっくり判定できて、画面サイズからのほうがより細かく判定でき流感じですね。

用途に合わせて使い分けるといいでしょう。