iOS设备实际尺寸以英寸为单位

我看了很多关于iOS的post,如何检索真实的大小。 我发现这样的解决scheme,但我认为它不适用于所有设备。

+(float) getRealSize { float scale = 1; if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { scale = [[UIScreen mainScreen] scale]; } float dpi; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { dpi = 132 * scale; } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { dpi = 163 * scale; } else { dpi = 160 * scale; } CGRect originalFrame = [[UIScreen mainScreen] bounds]; float w = originalFrame.size.width; float h = originalFrame.size.height; return dpi * sqrtf(w*w + h*h); } 

如何更新这种方法来支持所有设备? 我想要DPI(PPI)或英寸。 或者,可能有,有任何图书馆来帮忙。

为防止closures已发布:在计算器中没有适当的解决scheme。 例如, iOS以编程方式获取物理屏幕大小? 为iPhone获取物理屏幕尺寸英寸 如何获取iOS中的屏幕宽度和高度? 等等,等等…现在没有解决办法。

iOS中没有任何API来获得这个。 使用这个,并确保有新设备时更新: https : //github.com/lmirosevic/GBDeviceInfo

我不认为这将是一个AppStore的问题,但也许不包括越狱吊舱。

此外,你可以复制信息: https : //github.com/lmirosevic/GBDeviceInfo/blob/master/GBDeviceInfo/GBDeviceInfo_iOS.m – 这只是一个关于设备的信息列表 – 没有什么疯狂的

我的问题和@ lou-franco的答案的结果代码:

 //method -(float) getRealSize { float scale = 1.f; if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { scale = [[UIScreen mainScreen] scale]; } float ppi = [GBDeviceInfo deviceInfo].displayInfo.pixelsPerInch; if (ppi == 0) { ppi = 160.f; } CGRect originalFrame = [[UIScreen mainScreen] bounds]; float w = originalFrame.size.width; float h = originalFrame.size.height; return sqrtf(w*w + h*h) * scale / ppi; } //usage: float inches = [self getRealSize];