2011-04-06 7 views
11

संभव डुप्लिकेट:
Detect Retina Displayयह जानते हुए कि उपकरणों के आधार पर - रेटिना/गैर-रेटिना

हमें कैसे पता कर सकते हैं अगर एक डिवाइस एक रेटिना प्रदर्शन या उद्देश्य सी कोड से नहीं है?

+2

आपको इसकी आवश्यकता क्यों होगी? –

+0

जैसा कि [रेटिना डिस्प्ले का पता लगाएं] (http://stackoverflow.com/questions/3504173/detect-retina-display) –

+1

रेटिना डिस्प्ले के साथ समय क्षेत्र क्या करना है? – occulus

उत्तर

5

[UIScreen mainScreen] पर scale संपत्ति की जांच कर सकते हैं यदि यह 2.0 है तो आप रेटिना पर चल रहे हैं, यदि यह 1.0 है तो आप नहीं हैं। आप वर्तमान कोरग्राफिक्स संदर्भ से स्केल भी प्राप्त कर सकते हैं।

+2

और यदि उपयोगकर्ता इसे आईओएस <4 –

+2

पर चलाता है तो एप्लिकेशन क्रैश हो जाएगा। यही कारण है कि आप पहले जांचना चाहते हैं कि [[यूआईस्क्रीन मुख्यस्क्रीन] जवाब देता है तो चयनकर्ता: @ चयनकर्ता (स्केल)] सत्य है। पिछली संगतता सुनिश्चित करने के लिए आप कोड कैसे करेंगे, यह सामान्य अवधारणा है। – GorillaPatch

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

यह शायद> = 2.0 अब (आईफोन 6/6 +) – shabbirv

-1

मुझे नहीं लगता कि आपको लगता है कि सीधे निर्धारित कर सकते हैं। आपको इसे मॉडल जानकारी से अनुमानित करना होगा जिसे आप sysctlbyname से वापस प्राप्त कर सकते हैं (आईओएस मैन पेज देखें)। उदाहरण के लिए:

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

आप "iPhone3,1" जो एक रेटिना डिस्प्ले है, या "iPhone 2,1" जो नहीं है इस तरह की स्ट्रिंग दे देंगे।

+0

होना चाहिए यह एक भयानक विचार है-यह भविष्य में सबूत नहीं है, और चौथे-जनरल आइपॉड स्पर्श के लिए भी खाता नहीं है, जिसमें रेटिना भी है प्रदर्शन। अन्य उत्तरों में वर्णित 'यूआईस्क्रीन' वर्ग की 'स्केल' संपत्ति, ऐसा करने का सही तरीका है। –

+2

अच्छा बिंदु। मुझे सही साबित होना है। – onnoweb

संबंधित मुद्दे