2019独角兽企业重金招聘Python工程师标准>>>
屏幕尺寸等于分辨率吗?如果你说是,那我在问,iPadAir 和 iPadmini3 分辨率一样吗?那尺寸呢?
OpenGL绘制地图要依据不同得ppi做适配,UIScreen 和UIDevice这两个类中并没有发现任何关于ppi接口的信息。 而计算公式又需要知道屏幕尺寸:
// float w = [UIScreen mainScreen].bounds.size.width;// float h = [UIScreen mainScreen].bounds.size.height;// dpi = sqrt( w*w + h*h ) / 屏幕尺寸 ;
记得当时在两个群里问如何获取屏幕尺寸的时候,被人一顿喷。ios开发连这个都不知道,甚是悲伤,咱只好掩面继续百度,google。
在iPhone 6 出来之前iPhone和iPod的ppi都是326。
iPad 的就比较特殊 iPadmini 是 163 *2 其他的是 132 * 2 乘2是代表是否为R屏;
如果能区分是不是mimi就能解决问题,现在的问题就是变成如何获取ios设备硬件信息。继续换关键字百度,google;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {dpi = 163 * scale;} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {if (is iPad mimi) {dpi = 163 * scale;} else {dpi = 132 * scale;}} else {dpi = 163 * scale;}
最后找到一段代码通过获取设备的硬件信息,和官网上得型号做匹对:
- (NSString*) machine
{struct utsname systemInfo;uname(&systemInfo); NSString* code = [NSString stringWithCString:systemInfo.machineencoding:NSUTF8StringEncoding];static NSDictionary* deviceNamesByCode = nil;if (!deviceNamesByCode) {deviceNamesByCode = @{@"i386" :@"Simulator",@"iPod1,1" :@"iPod Touch",@"iPod2,1" :@"iPod Touch",@"iPod3,1" :@"iPod Touch",@"iPod4,1" :@"iPod Touch",@"iPhone1,1" :@"iPhone",@"iPhone1,2" :@"iPhone",@"iPhone2,1" :@"iPhone",@"iPad1,1" :@"iPad",@"iPad2,1" :@"iPad 2",@"iPad3,1" :@"iPad",@"iPhone3,1" :@"iPhone 4",@"iPhone4,1" :@"iPhone 4S",@"iPhone5,1" :@"iPhone 5",@"iPhone5,2" :@"iPhone 5",@"iPad3,4" :@"iPad",@"iPad2,5" :@"iPad Mini",@"iPhone5,3" :@"iPhone 5c",@"iPhone5,4" :@"iPhone 5c",@"iPhone6,1" :@"iPhone 5s",@"iPhone6,2" :@"iPhone 5s",@"iPad4,1" :@"iPad Air",@"iPad4,2" :@"iPad Air",@"iPad2,5" :@"iPad Mini",@"iPad2,6" :@"iPad Mini" ,@"iPad2,7" :@"iPad Mini",@"iPad4,4" :@"iPad Mini",@"iPad4,5" :@"iPad Mini" ,@"iPad4,6" :@"iPad Mini",@"iPad4,7" :@"iPad Mini",@"iPad4,8" :@"iPad Mini",@"iPad4,9" :@"iPad Mini",@"iPhone7,1" :@"iPhone 6 Plus", // Phone 6 Plus@"iPhone7,2" :@"iPhone 6", // Phone 6 Plus};}NSString* deviceName = [deviceNamesByCode objectForKey:code];return deviceName;
}