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

时间:2016-06-08 15:02:00

标签: ios objective-c iphone ipad

我看过很多关于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? 等,等等......现在没有解决方案。

2 个答案:

答案 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];