UITraitCollectionを使う

ViewControllerのなかでtraitCollectionの情報を取得

画面サイズの情報を取得

  • int verticalSize = self.traitCollection.verticalSizeClass; //縦方向サイズを取得
  • int horizontalSize = self.traitCollection.horizontalSizeClass; //横方向サイズを取得

返り値

  • UIUserInterfaceSizeClassUnspecified=0 //Unspecified
  • UIUserInterfaceSizeClassCompact=1 //Compact
  • UIUserInterfaceSizeClassRegular=2 //Regular

使用例

if(self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact){

//縦サイズがCompactの場合 ≒ iPhoneが横向きの場合

}

デバイスの種別情報を取得

  • int thisDevice = self.traitCollection.userInterfaceIdiom; //デバイスの種別情報を取得

返り値

  • UIUserInterfaceIdiomUnspecified=-1 //Unspecified
  • UIUserInterfaceIdiomPhone=0 //iPhone
  • UIUserInterfaceIdiomPad=1 //iPad
  • UIUserInterfaceIdiomTV //AppleTV
  • UIUserInterfaceIdiomCarPlay //CarPlay

使用例

switch(self.traitCollection.userInterfaceIdiom ){

case UIUserInterfaceIdiomPhone: //iPhoneの場合
break;

case UIUserInterfaceIdiomPad: //iPadの場合
break;

}

取得のタイミング

  • viewWillAppear内で取得するとUnspecifiedとなりうまく取得できない。
  • viewWillLayoutSubviews内で取得すると良好。