iOS - viewDidLoad で現在のサイズクラスを検出する 質問する

iOS - viewDidLoad で現在のサイズクラスを検出する 質問する

iOS 8 でアダプティブ レイアウトを使用しており、サイズ クラスが正確に何であるかを取得したいと考えていますviewDidLoad。これについて何かアイデアはありますか?

ベストアンサー1

iOS 8以降UIViewコントローラーを採用するUIトレイト環境プロトコル。このプロトコルは、特性コレクションこれはタイプUIトレイトコレクション. そのため、特性コレクション単に使用することでself.traitCollection

UIトレイトコレクションアクセスしたいプロパティが2つあります。水平サイズクラスそして垂直サイズクラスこれらのプロパティにアクセスすると、NS整数返される値を定義する列挙型は、公式ドキュメントで次のように宣言されています。(将来的には追加される可能性があります!)

typedef NS_ENUM (NSInteger, UIUserInterfaceSizeClass {
   UIUserInterfaceSizeClassUnspecified = 0,
   UIUserInterfaceSizeClassCompact     = 1,
   UIUserInterfaceSizeClassRegular     = 2,
};

つまり、クラスを取得してスイッチを使用してコードの方向を決定することができます。例は次のようになります。

NSInteger horizontalClass = self.traitCollection.horizontalSizeClass;
NSInteger verticalCass = self.traitCollection.verticalSizeClass;

switch (horizontalClass) {
    case UIUserInterfaceSizeClassCompact :
        // horizontal is compact class.. do stuff...
        break;
    case UIUserInterfaceSizeClassRegular :
        // horizontal is regular class.. do stuff...
        break;
    default :
        // horizontal is unknown..
        break;
}
// continue similarly for verticalClass etc.

おすすめ記事