【Swift】[4]デバイス毎にコンポーネントの位置や行う処理を変更したい時

iOSのデバイスごとに実行したい処理を変更、分岐させたい場合は以下のコードを書くと実現する事ができます。

 if UIDevice.current.userInterfaceIdiom == .phone {
     // デバイスがiPhoneの時
                    
 } else if UIDevice.current.userInterfaceIdiom == .pad {
     // デバイスがiPadの時
                    
 }

今やiOSデバイスにはiPhoneだけでも4.0インチのiPhoneSEから約6.5インチのiPhoneXS maxがあり、これらの画面サイズに適したレイアウトを設定する必要があります。

その際に、上に記載したコードを用いることによって、現在使用しているデバイスがiPhoneかiPadかによって分岐させる事ができます。(ちなみにUIDevice.current.userInterfaceIdiomの種類は他にも[.carplay]と[.tv]があります)

ただし、このコードではiPhoneの機種ごと(画面サイズごと)に分岐できていないため、上記の「//デバイスがiPhoneの時」の部分に画面サイズの高さ毎に条件分岐をさせる必要があります。

例としては下記のコードのようになります。

let screenSize = UIScreen.main.bounds.size 
...
...
switch (screenSize.height) {
case 480.0:
     //iPhone4とiPhone4S
     break
case 568.0:
    //iPhoneSEなどの4.0インチ
     break
case 667.0:
    //iPhone6SやiPhone8などの4.7インチ
     break
case 736.0:
    //iPhone6S+やiPhone8+などの5.5インチ
     break
case 812.0:
    //iPhoneX,iPhoneXSなどの5.8インチ
     break
case 896.0:
    //iPhoneXS MAX
     break
default:
     break
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です