UITraitCollection
UITraitCollection: NSObject
适配相关
初始化
- 用户界面
UITraitCollection *userInterface = [UITraitCollection traitCollectionWithUserInterfaceIdiom:UIUserInterfaceIdiomPhone];
/*
typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
UIUserInterfaceIdiomUnspecified = -1,
UIUserInterfaceIdiomPhone, // iPhone and iPod touch style UI
UIUserInterfaceIdiomPad, // iPad style UI
UIUserInterfaceIdiomTV, // Apple TV style UI
UIUserInterfaceIdiomCarPlay, // CarPlay style UI
};
*/
- 屏幕倍率
UITraitCollection *scale = [UITraitCollection traitCollectionWithDisplayScale:2];
- sizeClass
UITraitCollection *hSizeClass = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
UITraitCollection *vSizeClass = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
/*
typedef NS_ENUM(NSInteger, UIUserInterfaceSizeClass) {
UIUserInterfaceSizeClassUnspecified = 0,
UIUserInterfaceSizeClassCompact = 1,
UIUserInterfaceSizeClassRegular = 2,
};
*/
- 3D touch 能力
UITraitCollection *force = [UITraitCollection traitCollectionWithForceTouchCapability:UIForceTouchCapabilityAvailable];
/*
typedef NS_ENUM(NSInteger, UIForceTouchCapability) {
UIForceTouchCapabilityUnknown = 0,
UIForceTouchCapabilityUnavailable = 1,
UIForceTouchCapabilityAvailable = 2
};
*/
属性
traitCollection.userInterfaceIdiom;
traitCollection.displayScale;
traitCollection.horizontalSizeClass;
traitCollection.verticalSizeClass;
traitCollection.forceTouchCapability;
iOS 10
// 方向?功能不详
UITraitCollection *direction = [UITraitCollection traitCollectionWithLayoutDirection:UITraitEnvironmentLayoutDirectionLeftToRight];
/*
typedef NS_ENUM(NSInteger, UITraitEnvironmentLayoutDirection) {
UITraitEnvironmentLayoutDirectionUnspecified = -1,
UITraitEnvironmentLayoutDirectionLeftToRight = UIUserInterfaceLayoutDirectionLeftToRight,
UITraitEnvironmentLayoutDirectionRightToLeft = UIUserInterfaceLayoutDirectionRightToLeft,
} NS_ENUM_AVAILABLE_IOS(10_0);
*/
// 功能不详
UITraitCollection *preferred = [UITraitCollection traitCollectionWithPreferredContentSizeCategory:UIContentSizeCategoryLarge];
/*
很多常量可选,略
*/
// 色彩
UITraitCollection *gamut = [UITraitCollection traitCollectionWithDisplayGamut:UIDisplayGamutSRGB];
/*
typedef NS_ENUM(NSInteger, UIDisplayGamut) {
UIDisplayGamutUnspecified = -1, // UIKit will not set this anymore, instead a sensible default is chosen based on the device capabilities and settings always
UIDisplayGamutSRGB,
UIDisplayGamutP3
} NS_ENUM_AVAILABLE_IOS(10_0);
*/
traitCollection.layoutDirection;
traitCollection.preferredContentSizeCategory;
traitCollection.displayGamut;
方法
- 合并
UITraitCollection *b = [UITraitCollection traitCollectionWithTraitsFromCollections:@[hSizeClass, vSizeClass]];
- 检查包含
if ([self.traitCollection containsTraitsInCollection:verticaTrait]) {
}
协议
直接可用,NSObject 都可用
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
NSLog(@"change");
NSLog(@"原来的:%@", previousTraitCollection);
NSLog(@"新的:%@", self.traitCollection)
}