2011-04-06 61 views
11

可能重複:
Detect Retina Display知道設備類型 - 視網膜/非視網膜

我們怎樣才能知道,如果一個設備有從客觀的C代碼視網膜顯示或沒有?

+2

你爲什麼需要這個? – 2011-04-06 15:29:15

+0

同[檢測視網膜顯示(http://stackoverflow.com/questions/3504173/detect-retina-display) – 2011-04-06 15:31:05

+1

發生了什麼時區得到了與Retina顯示屏呢? – occulus 2011-04-06 15:32:45

回答

5

如果您的視力是2.0,您可以在[UIScreen mainScreen]上查看scale屬性,如果是1.0,則視頻沒有。您還可以從當前的CoreGraphics上下文中獲取比例。

+2

如果用戶在iOS上運行它,應用程序將崩潰<4 – 2011-04-06 15:33:19

+2

正確。這就是爲什麼你要先檢查[[UIScreen mainScreen] respondsToSelector:@selector(scale)]是否爲真。這是您如何編寫代碼以確保向後兼容性的一般概念。 – GorillaPatch 2011-04-06 19:54:19

56
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] 
    && [[UIScreen mainScreen] scale] >= 2.0) { 
    // Retina 
} else { 
    // Not Retina 
} 
+2

現在應該可能> = 2.0(iPhone 6/6 +) – shabbirv 2014-12-02 20:48:10

-1

我不認爲你可以直接確定。您必須從可從sysctlbyname取回的模型信息中推斷出它(請參閱iOS手冊頁)。例如:

sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
char *machine = malloc(size); 
sysctlbyname("hw.machine", machine, &size, NULL, 0); 

會給你回來就好「iPhone3,1」其中有一個視網膜顯示器,或者其中有沒有「iPhone 2,1」的字符串。

+0

這是一個糟糕的主意 - 它根本無法適應未來,甚至沒有考慮過第四代iPod touch,它也有Retina顯示。正如其他答案中所述,「UIScreen」類的「scale」屬性是正確的方法。 – 2011-04-06 15:41:56

+2

好點。我立場糾正。 – onnoweb 2011-04-06 15:45:22

相關問題