Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS设备实际尺寸(英寸)_Ios_Objective C_Iphone_Ipad - Fatal编程技术网

iOS设备实际尺寸(英寸)

iOS设备实际尺寸(英寸),ios,objective-c,iphone,ipad,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_I

我看过很多关于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中没有API来实现这一点。使用此选项并确保在有新设备时更新:

我不认为这对AppStore来说是个问题,但可能不包括越狱吊舱


另外,你可以从下面复制信息:--这只是一个关于设备的信息列表--没有什么疯狂的

我的问题和@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];

天哪,为什么被否决?你说的真实尺寸是什么意思?设备大小与屏幕大小不同!当你说设备尺寸时,你可以从苹果的规格中得到。我想你甚至可以从苹果网站上获得屏幕大小。什么;这是以编程方式计算它们的要点?当然我需要屏幕的实际大小,因为你声称的第一个链接没有合适的解决方案,为你的问题提供了多种解决方案。忽略你为设备找到一个实际的“大小”的想法;你想达到什么目的?如果您尝试任何类型的界面缩放,那么这不太可能起作用,因为iPhone X+或iPad上的多任务导致应用程序无法全屏显示。相反,您应该使用
大小类
自动布局