您的位置:首页 > 产品设计 > UI/UE

iOS [UIScreen mainScreen].bounds 横竖屏在不同版本获取屏幕大小不对的问题

2017-03-14 16:06 513 查看
最近在做 随遇(我们公司的陌生人社交应用) 的时候,做了一个滑动旋转的引导图,类似当当和百度音乐,在对iphone 6 plus做适配的时候发现了一个奇葩的问题:在公司某个同事的机器上,引导图显示是正常的,在其他人的6P上,显示不正常,让我觉得很疑惑,于是乎debug一番,发现如下规律:

1,在引导图能正常显示的机器上,通过[UIScreen mainScreen].bounds 获得的高度是 667!!!

2,在引导图不能正常显示的机器上,通过[UIScreen mainScreen].bounds获得的高度是736。

很明显,1是不对的,667是6的高度!搞得我非常之不爽,一时也没弄明白其中的缘由,给测试妹子也给不了解释。

第二天我仔细对比这两台手机,发现其中一台竟然用的是 放大模式 !而6P在放大模式下,通过[UIScreen mainScreen].bounds 获得的高度竟然是667,我也是醉了。果断调回标准模式做适配,瞬间搞定。

另外,我又试了一下iPhone6在放大模式下,其高度是:568!!!iPhone5s及之前的iPhone没有放大模式。

同样遇到,这时候我给出的解决方法是判断设备版本,来让高、宽是否相等或相互替换。


iOS 获取手机型号,系统版本



 

作者 天明依旧 关注

2016.01.26 10:07* 字数 560 阅读 11123评论
33喜欢 19

新添加判断iPhone 7、iPhone 7 Plus ,我手里没有7,判断不对表打我~
资料:http://www.iphonehacks.com/download-iphone-ios-firmware

1.手机系统版本:9.1

NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
2.手机类型:iPhone 6

NSString* phoneModel = [self iphoneType];//方法在下面
3.手机系统:iPhone OS

NSString * iponeM = [[UIDevice currentDevice] systemName];
4.电池电量
CGFloat batteryLevel=[[UIDevicecurrentDevice]batteryLevel];

- (NSString *)iphoneType {
需要导入头文件:#import <sys/utsname.h>
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";

if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7";

if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus";
if ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPad1,1"])   return @"iPad 1G";
if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2";
if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2";
if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"])   return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad2,6"])   return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad2,7"])   return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3";
if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3";
if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4";
if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4";
if ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air";
if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air";
if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air";
if ([platform isEqualToString:@"iPad4,4"])   return @"iPad Mini 2G";
if ([platform isEqualToString:@"iPad4,5"])   return @"iPad Mini 2G";
if ([platform isEqualToString:@"iPad4,6"])   return @"iPad Mini 2G";
if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
return platform;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐