UITraitCollection
従属:NSCopying、NSObject(Protocol)、NSSecureCoding
フレームワーク: iOS 8.0 以降の UIKit。
宣言: UITraitCollection.h
Trait (形質) コレクションは、水平および垂直方向のサイズクラス、表示スケール、およびユーザー・インターフェース・イディオムなどの形質を含め、あなたのアプリのための iOS インタフェース環境を説明します。適応するインターフェースを作成するには、これらの形質の変化に応じて、アプリのレイアウトを調整するためにコードを記述して下さい。
iOS の形質環境は UITraitEnvironment プロトコルの traitCollection プロパティから公開されます。このプロトコルは、以下のクラスで採用されています:UIScreen、 UIWindow、 UIViewController、 UIPresentationController と UIView です。あなたは UITraitCollection horizontalSizeClass、 verticalSizeClass、 displayScale および userInterfaceIdiom プロパティを使用して、特定の形質値にアクセスします。イディオムとサイズの形質を表現する値は UIUserInterfaceIdiom と UIUserInterfaceSizeClass 列挙体で定義されています。表示スケールの特性の値は、浮動小数点数として表現されます。
iOS のインターフェイス環境の変化にあなたのビューコントローラとビューが応答にするには、形質環境プロトコルから traitCollectionDidChange: メソッドを上書き(オーバーライド) します。インターフェース環境の変化に応じて、ビューコントローラのアニメーションをカスタマイズするには、 UIContentContainer プロトコルの willTransitionToTraitCollection:withTransitionCoordinator: メソッドをオーバーライドします。
この図は、各種デバイスのフルスクリーンで実行しているときにアプリが遭遇する可能性のある、横 (幅) と縦 (高さ) のサイズのクラスを示します。
iPad のスライド・オーバーや分割表示であなたのアプリが遭遇するサイズクラスの詳細については、iPad でのマルチタスク機能拡張を採用する の スライド・オーバーと分割表示クイック・スタート を参照して下さい。
特定の環境に対してマッチングを支援するためのスタンドアロンの形質コレクションを作成することができます。UITraitCollection クラスは、4つの特殊なコンストラクタだけでなく、形質コレクション、traitCollectionWithTraitsFromCollections: の配列を結合することができるコンストラクタを含みます。
スタンドアロンの形質コレクションの一つの重要な用途は、現在の iOS インターフェース環境に基づいて画像を条件付きで使用できるようにすることです。 UIImageAsset クラスリファレンス の概要セクションで説明するように、UIImageAsset インスタンスを介して UIImage インスタンスで形質コレクションを関連付けできます。グラフィカルに Xcode の IDE 内から資産カタログを設定する事については、アセットカタログのヘルプ を参照してください。
iPhone 上でランドスケープの向きに2列の分割ビューを有効にするには、スタンドアロンの形質コレクションを使用できます。 UIViewController クラスの setOverrideTraitCollection:forChildViewController: メソッドを参照してください。
スタンドアロンの形質コレクションも UIAppearance プロトコルリファレンス に記載したように、appearanceForTraitCollection: プロトコルメソッドを経由して、ビューのアピアランスをカスタマイズするのに有用です。
iOS での適応インタフェースの作成に関する WWDC2014 のプレゼンテーションに関しては、Building Adaptive Apps with UIKit (UIKit に適応したアプリをビルドする) を参照してください。
3D タッチと形質コレクション
iOS 9 以降では、あなたのアプリが実行しているデバイスが 3D タッチをサポートしているかどうかを確認するために、このクラスを使用できます。形質 (Trait) 環境とアプリ内の全てのオブジェクトの形質コレクションに forceTouchCapability プロパティの値を読み取って下さい。形質環境の詳細については、UITraitEnvironment プロトコルリファレンス を参照して下さい。フォースタッチ機能のプロパティの可能な値については、UIForceTouchCapability 列挙体を参照してください。
ユーザーが設定 (Setting) で 3D タッチをオフにできますので、traitCollectionDidChange: メソッドの実装で forceTouchCapability プロパティの値を確認し、プロパティの値に応じて、あなたのコードパスを調整してください。
タスク
形質コレクションの作成
+ traitCollectionWithTraitsFromCollections:
形質コレクションの指定された配列からマージした形質からなる新しい形質のコレクションを返します。
宣言
<< SWIFT >>
init(traitsFromCollections traitCollections: [UITraitCollection])<< OBJECTIVE-C >>
+ (UITraitCollection *)traitCollectionWithTraitsFromCollections:(NSArray<UITraitCollection *> *)traitCollections
パラメータ
traitCollections | UITraitCollection オブジェクトの配列。 |
戻り値
指定された traitCollections 配列からマージした形質から成る新しい形質コレクション。
議論
このメソッドは、1つ以上の形質コレクションの配列を取り、新たな形質コレクションを作成するためにそれらをマージします。配列が、複数の要素を含んでいる場合、指定された形質を含む最高のインデックスにある要素が、その形質のために使用されます。例えば、次のコードスニペットは、配列の2番目の要素が、その最初の形質よりも優先されるので、コンパクト な水平サイズクラスで形質コレクションを作成します。
- UITraitCollection *newHorizontalSizeClass1 = [UITraitCollection traitCollectionWithHorizontalSizeClass: UIUserInterfaceSizeClassRegular];
- UITraitCollection *newHorizontalSizeClass2 = [UITraitCollection traitCollectionWithHorizontalSizeClass: UIUserInterfaceSizeClassCompact];
- NSArray *traitArray = [NSArray arrayWithObjects: newHorizontalSizeClass1, newHorizontalSizeClass2, nil];
- UITraitCollection *combinedTraits = [UITraitCollection traitCollectionWithTraitsFromCollections: traitArray];
利用可能
iOS 8.0 以降で利用可能。
+ traitCollectionWithDisplayScale:
指定された表示スケールだけを含む新しい形質コレクションを返します。
宣言
<< SWIFT >>
init(displayScale scale: CGFloat)
<< OBJECTIVE-C >>
+ (UITraitCollection *)traitCollectionWithDisplayScale:(CGFloat)scale
パラメータ
scale | 新しい形質コレクションの表示スケール。Retina ディスプレイのスケールを指定するには、2.0 以上の値を指定し、Retina でないディスプレイのスケールを指定するには、1.0 を使用してください。 |
戻り値
指定された表示スケールの形質だけを含む新しい形質コレクション。
利用可能
iOS 8.0 以降で利用可能。
+ traitCollectionWithUserInterfaceIdiom:
指定されたインターフェイスのイディオムのみを含む新しい形質コレクションを返します。
宣言
<< SWIFT >>
init(userInterfaceIdiom idiom: UIUserInterfaceIdiom)
<< OBJECTIVE-C >>
+ (UITraitCollection *)traitCollectionWithUserInterfaceIdiom:(UIUserInterfaceIdiom)idiom
パラメータ
idiom | 新しい形質コレクションのためのユーザー・インターフェース・イディオムを指定する userInterfaceIdiom 値。 |
戻り値
指定されたユーザー・インタフェース・イディオムの形質のみを含む新しい形質コレクション。
利用可能
iOS 8.0 以降で利用可能。
+ traitCollectionWithHorizontalSizeClass:
指定された水平サイズクラスのみを含む新しい形質コレクションを返します。
宣言
<< SWIFT >>
init(horizontalSizeClass horizontalSizeClass: UIUserInterfaceSizeClass)
<< OBJECTIVE-C >>
+ (UITraitCollection *)traitCollectionWithHorizontalSizeClass:(UIUserInterfaceSizeClass)horizontalSizeClass
パラメータ
horizontalSizeClass | 新しい形質コレクションのための水平方向のサイズクラスを指定する UIUserInterfaceSizeClass 値。 |
戻り値
指定した水平方向のサイズクラスの形質のみを含む新しい形質コレクション。
利用可能
iOS 8.0 以降で利用可能。
+ traitCollectionWithVerticalSizeClass:
指定された垂直方向のサイズクラスのみを含む新しい形質コレクションを返します。
<< SWIFT >>
init(verticalSizeClass verticalSizeClass: UIUserInterfaceSizeClass)
<< OBJECTIVE-C >>
+ (UITraitCollection * _Nonnull)traitCollectionWithVerticalSizeClass:(UIUserInterfaceSizeClass)verticalSizeClass
パラメータ
verticalSizeClass | 新しい形質コレクションのために垂直方向のサイズクラスを指定する UIUserInterfaceSizeClass 値。 |
戻り値
指定された垂直方向のサイズクラスの形質のみを含む新しい形質コレクション。
利用可能
iOS 8.0 以降で利用可能。
+ traitCollectionWithForceTouchCapability:
指定された力のタッチ機能の形質のみを含む形質コレクションを作成します。
宣言
<< SWIFT >>
init(forceTouchCapability capability: UIForceTouchCapability)
<< OBJECTIVE-C >>
+ (UITraitCollection * _Nonnull)traitCollectionWithForceTouchCapability:(UIForceTouchCapability)capability
パラメータ
capability | 新しい形質コレクションのための力のタッチ機能。UIForceTouchCapability 列挙型からの定数のいずれか1つを使用します。 |
戻り値
指定された力のタッチ機能の形質のみを含む新しい形質コレクション。
利用可能
iOS 9.0 以降で利用可能。
形質情報の取得
displayScale プロパティ
形質コレクションの表示スケール。(読み取り専用)
宣言
<< SWIFT >>
var displayScale: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat displayScale
議論
1.0 の値は、Retina でないディスプレイを示し、2.0 の値は、Retina ディスプレイを示しています。形質コレクションのデフォルトのディスプレイスケールは 0.0 です。(未指定を示します)。
利用可能
iOS 8.0 以降で利用可能。
horizontalSizeClass プロパティ
形質コレクションの水平方向のサイズクラス。(読み取り専用)
宣言
<< SWIFT >>
var horizontalSizeClass: UIUserInterfaceSizeClass { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UIUserInterfaceSizeClass horizontalSizeClass
議論
形質コレクションのデフォルトの水平方向のサイズクラスは UIUserInterfaceSizeClassUnspecified です。
利用可能
iOS 8.0 以降で利用可能。
userInterfaceIdiom プロパティ
形質コレクションのユーザーインターフェースイディオム。(読み取り専用)
宣言
<< SWIFT >>
var userInterfaceIdiom: UIUserInterfaceIdiom { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UIUserInterfaceIdiom userInterfaceIdiom
議論
形質コレクションのデフォルトのユーザー・インターフェース・イディオムは UIUserInterfaceSizeClassUnspecified です。
利用可能
iOS 8.0 以降で利用可能。
verticalSizeClass プロパティ
形質コレクションの垂直サイズクラス。(読み取り専用)
宣言
<< SWIFT >>
var verticalSizeClass: UIUserInterfaceSizeClass { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UIUserInterfaceSizeClass verticalSizeClass
議論
形質コレクションのデフォルトの垂直方向のサイズクラスは UIUserInterfaceSizeClassUnspecified です。
利用可能
iOS 8.0 以降で利用可能。
forceTouchCapability プロパティ
形質コレクションの力のタッチの能力値。(読み取り専用)
宣言
<< SWIFT >>
var forceTouchCapability: UIForceTouchCapability { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UIForceTouchCapability forceTouchCapability
議論
3D タッチは、特定のデバイスだけで利用可能です。これらのデバイスでは、利用可能性が設定アプリの、ユーザーの関連するアクセシビリティ設定によって決定されます。アプリの起動時と traitCollectionDidChange: メソッドの実装でこのプロパティの値を確認して下さい。
このプロパティが値を含んでいない場合は、意味は値 UIForceTouchCapabilityUnknown に相当します。
利用可能
iOS 9.0 以降で利用可能。
形質コレクションの比較
- containsTraitsInCollection:
形質コレクションが別の形質コレクションの値すべてを含んでいるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
func containsTraitsInCollection(_ trait: UITraitCollection?) -> Bool
<< OBJECTIVE-C >>
- (BOOL)containsTraitsInCollection:(UITraitCollection * _Nullable)trait
パラメータ
trait | 受信者の形質コレクションに比較したい形質コレクション。 |
戻り値
このメソッドは、受信者が trait パラメータに渡された形質コレクションの形質値のすべてを含んでいれば YES、それ以外の場合は NO を返します。
議論
このメソッドは2つのスタンドアロンの形質コレクションを比較、またはスタンドアロンの形質コレクションに iOS のインタフェース環境の形質コレクションを比較するために使用します。
利用可能
iOS 8.0 以降で利用可能。
定数
UIForceTouchCapability
デバイス上の 3D タッチの利用可能性を示すキー。特定のデバイスだけが、3D タッチをサポートしています。行えるデバイスで、ユーザーは設定でアクセシビリティ・エリアで 3D タッチを無効にすることができます。
宣言
<< SWIFT >>
enum UIForceTouchCapability : Int {
        case Unknown
        case Unavailable
        case Available
}
<< OBJECTIVE-C >>
typedef NS_ENUM (NSInteger,
        UIForceTouchCapability ) {
        UIForceTouchCapabilityUnknown = 0,
        UIForceTouchCapabilityUnavailable = 1,
        UIForceTouchCapabilityAvailable = 2
};
定数
3D タッチの利用可能性は不明です。例えば、ビューを作成し、まだアプリのビュー階層に追加していない場合、ビューの形質コレクションは、この値です。
iOS 9.0 以降で利用可能。
3D タッチはこのデバイスでは使用できません。
iOS 9.0 以降で利用可能。
3D タッチは、このデバイスで利用可能です。
iOS 9.0 以降で利用可能。
import 文
<< OBJECTIVE-C >>
@import UIKit;
<< SWIFT >>
import UIKit
利用可能
iOS 9.0 以降で利用可能。