我看过很多关于iOS如何检索实际尺寸的帖子。 我找到了这样的解决方案,但我认为它并不适用于所有设备。
+(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)或英寸。 或者,可能是,有任何图书馆可以提供帮助。
为了防止关闭被公开:stackoverflow中没有适当的解决方案。 例如, iOS get physical screen size programmatically? Getting the physical screen size in inches for iPhone How to get the screen width and height in iOS? 等,等等......现在没有解决方案。
答案 0 :(得分:2)
iOS中没有API来获取此功能。使用此选项并确保在有新设备时进行更新:https://github.com/lmirosevic/GBDeviceInfo
我不认为这对AppStore来说不是问题,但可能不包括越狱吊舱。
另外,您可以复制以下信息:https://github.com/lmirosevic/GBDeviceInfo/blob/master/GBDeviceInfo/GBDeviceInfo_iOS.m - 这只是关于设备的信息列表 - 没什么可疯狂的
答案 1 :(得分:0)
我的问题的结果代码和@ 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];