2016-06-08 128 views
1

我查看了很多关于iOS的文章,了解如何检索实际尺寸。 我发现了这样的解决方案,但我认为它不适用于所有设备。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

Omg,为什么downvoted? – Vyacheslav

+0

你是什么意思的实际大小?设备尺寸与屏幕尺寸不同!当你说设备大小时,你可以从苹果规格中获得。我想你甚至可以从苹果网站获得屏幕大小。什么是以编程方式计算它们的重点? –

+0

当然,我需要以英寸为单位的屏幕实际尺寸 – Vyacheslav

回答

0
我的问题,并@娄佛朗哥的答案

由此得到的代码:

//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]; 
相关问题