2016-06-08 81 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]; 
相關問題