在我之前的这篇博文点击打开链接,我跟大家分享了如何在项目中区分当前的移动设备是iPhone、ipod等系列中的哪一具体型号的产品,感兴趣的朋友可以区看一下。下面跟大家分享一下在做屏幕适配时如何区分当前移动设备的类型以及设备的方向(当然把这些选项直接添加到我之前的那段代码里面也是可以实现的)。直接看代码:
- (void)viewDidLoad {
[super viewDidLoad];
//判断设备的类型
if (self.traitCollection.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
NSLog(@"ipad");
}
if (self.traitCollection.userInterfaceIdiom == UIUserInterfaceIdiomPhone) {
NSLog(@"iphone");
}
// Do any additional setup after loading the view, typically from a nib.
}
#pragma mark----判断height和width的compact和regular值
//注:这个方法有局限性,因为如果当前的设备时ipad的话,那么height和width的值都是regular,所以当ipad的屏幕方向发生变化时将不会触发该方法
-(void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
if (newCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) {
NSLog(@"width compact");
}
if (newCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
NSLog(@"width regular");
}
if (newCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact) {
NSLog(@"height compact");
}
if (newCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular) {
NSLog(@"height regular");
}
}
#pragma mark----这个方法可以获取当前移动设备的分辨率和屏幕方向
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
UIDeviceOrientation orirent=[UIDevice currentDevice].orientation;
if (orirent == UIDeviceOrientationLandscapeLeft) {
NSLog(@"横向 左倾");
}
if (orirent == UIDeviceOrientationLandscapeRight) {
NSLog(@"横向 右倾");
}
if (orirent == UIDeviceOrientationPortraitUpsideDown) {
NSLog(@"纵向 下倾");
}
if (orirent == UIDeviceOrientationPortrait) {
NSLog(@"纵向 正常");
}
if (orirent == UIDeviceOrientationUnknown) {
NSLog(@"无法获知当前的手机是横屏还是竖屏");
}
}