iOS-size class
苹果对它的设备的屏幕进行了分类,正常的宽(regular),正常的高(regular),压缩的高(compact),压缩的宽(compact),任意宽,任意高。两两组合就可以包括了所有的设备的横屏和竖屏使用情况。公有九种。
宽高类型枚举;
typedef NS_ENUM(NSInteger, UIUserInterfaceSizeClass) {
UIUserInterfaceSizeClassUnspecified = 0,
UIUserInterfaceSizeClassCompact = 1,
UIUserInterfaceSizeClassRegular = 2,
} NS_ENUM_AVAILABLE_IOS(8_0);
通过UIViewController可以得到当前设备的宽高类型:(屏幕使用类型发生变化都会调用改方法)
-(void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
NSLog(@"屏幕宽高类型%@",newCollection);
}
输出结果:
2015-04-06 16:16:38.872 ViewController[2939:129171] 屏幕宽高类型<UITraitCollection: 0x7fe330482e00; _UITraitNameUserInterfaceIdiom = Phone, _UITraitNameDisplayScale = 2.000000, _UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Compact, _UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1>
通过切换不同的模拟器得到如下的总结:
- iPhone4S,iPhone5/5s,iPhone6
- 竖屏:(w:Compact h:Regular)
- 横屏:(w:Compact h:Compact)
- iPhone6 Plus
- 竖屏:(w:Compact h:Regular)
- 横屏:(w:Regular h:Compact)
- iPad
- 竖屏:(w:Regular h:Regular)
- 横屏:(w:Regular h:Regular)
小结:
size class的UI设计就是:同一UI界面,不同屏幕模式下的UI设计互不干扰。