दिलचस्प पोस्ट
विजुअल स्टूडियो में जीसीसी स्टाइल कमजोर है? पायथन में फ़ाइल में एक पंक्ति की खोज करें और उसे बदलें अनुरोध का उपयोग करके नोड। जे में बाइनरी सामग्री प्राप्त करना PHP के साथ .php एक्सटेंशन निकालें क्यों नहीं <fieldset> फ्लेक्स कंटेनर हो सकता है? जावा में एक अंतरफलक का उपयोग कब करना चाहिए? संपादन टेक्स्ट अधिकतम काम नहीं करते – उपयोगकर्ता अब भी सेट की तुलना में अधिक पंक्ति इनपुट कर सकता है AngularJS: वादे का प्रयोग कहाँ करना है? गतिशील रूप से three.js के साथ एक रेखा खींचना कोरफ्लैग झंडे को कैसे परिभाषित करें? ReactJS में इस। स्टेटीज और this.setstate के अंतर क्या है? पीडीओ त्रुटि: "SQLSTATE : सामान्य त्रुटि" डेटाबेस अद्यतन करते समय डेवलपर प्रत्येक रिश्तेदार पथ की शुरुआत में आगे स्लैश क्यों लगाएगा? दृश्य स्टूडियो 2012 में सी ++ 11 सुविधाओं फ़ंक्शन संकेतक के रूप में कैप्चर के साथ सी ++ लैम्ब्डा

रेटिना प्रदर्शन का पता लगाएं

क्या आईएसओ एसडीके यह जांचने का एक आसान तरीका प्रदान करता है कि वर्तमान डिवाइस का उच्च संकल्प डिस्प्ले (रेटिना) है या नहीं?

सबसे अच्छा तरीका मुझे अब यह करना है:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) { // RETINA DISPLAY } 

वेब के समाधान से एकत्रित समाधान "रेटिना प्रदर्शन का पता लगाएं"

सभी आईओएस उपकरणों पर विश्वसनीय ढंग से रेटिना डिस्प्ले का पता लगाने के लिए, आपको यह पता लगाना होगा कि डिवाइस आईओएस 4 + चला रहा है और अगर [UIScreen mainScreen].scale संपत्ति 2.0 के बराबर है। यदि आप scale संपत्ति मौजूद नहीं है, तो आप डिवाइस को iOS4 + चला रहे मान नहीं सकते, क्योंकि आईपैड 3.2 में यह संपत्ति भी शामिल है।

IOS3.2 चलने वाले आईपैड पर, स्केल 1x मोड में 1.0 और 2x मोड में 2.0 लौटाएगा – हालांकि हम जानते हैं कि डिवाइस में रेटिना डिस्प्ले नहीं है। आईपैड के लिए एप्पल ने iOS4.2 में यह व्यवहार बदल दिया: यह 1x और 2x मोड दोनों में 1.0 देता है। आप इस सिम्युलेटर में खुद का परीक्षण कर सकते हैं।

मैं -displayLinkWithTarget:selector: लिए परीक्षण -displayLinkWithTarget:selector: IOS4.x में मौजूद मुख्य स्क्रीन पर विधि, लेकिन iOS3.2 नहीं, और उसके बाद स्क्रीन के स्केल की जांच करें:

 if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0)) { // Retina display } else { // non-Retina display } 

@ बीमारप का उत्तर सही है बस चीजों को आसान बनाने के लिए, इस लाइन को अपनी Shared.pch फ़ाइल में जोड़ें:

 #define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale >= 2.0)) 

फिर किसी भी फाइल में आप ऐसा कर सकते हैं:

 if(IS_RETINA) { // etc.. } 
 +(BOOL)iPhoneRetina{ return ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))?1:0; } 

यह स्निपेट …

  int d = 0; // standard display if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) { d = 1; // is retina display } if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { d += 2; } 

रिटर्न होगा … 0 मानक रिज़ॉल्यूशन के लिए iPhone / iPod touch, 1 रेटिना आईफ़ोन, 2 मानक रिजोल्यूशन आईपैड के लिए, 3 रेटिना iPad के लिए।

एसएसटीoolkit एक तरीका है जो यह करता है:

http://sstoolk.it/documentation/Categories/UIScreen(SSToolkitAdditions).html

इसका उपयोग निम्नलिखित तरीके से किया जाता है:

 [[UIScreen mainScreen] isRetinaDisplay]; 

समानता के लिए फ़्लोटिंग-प्वाइंट वैल्यू की तुलना करने के लिए यह हमेशा थोड़ी चक्कर महसूस करता है मैं या तो के लिए जा रहा पसंद

 [UIScreen mainScreen].scale > 1.0; 

या

 [UIScreen mainScreen].scale < 2.0; 

यहां एक आसान गति विस्तार है:

 extension UIScreen { public func isRetina() -> Bool { return screenScale() >= 2.0 } public func isRetinaHD() -> Bool { return screenScale() >= 3.0 } private func screenScale() -> CGFloat? { if UIScreen.mainScreen().respondsToSelector(Selector("scale")) { return UIScreen.mainScreen().scale } return nil } } 

उपयोग:

 if UIScreen.mainScreen().isRetina() { // your code } 

यह ऊपर मैट एमसी के उत्तर पर एक रिफ है। केवल UIScreen पर एक श्रेणी

 #import "UIScreen+Util.h" @implementation UIScreen (Util) + (BOOL) isRetinaDisplay { static BOOL retina = NO; static BOOL alreadyChecked = NO; if (!alreadyChecked) { UIScreen *mainScreen = self.mainScreen; if (mainScreen) { retina = mainScreen.scale > 1.0; alreadyChecked = YES; } } return retina; } @end 

ऊपर दिए गए उत्तरों के स्विफ्ट संस्करण> = 2.0 स्केल के साथ ताकि इसमें आईफोन 6+ और अन्य भविष्य के उपकरण शामिल हो सकते हैं-रेटिना स्केल के साथ:

  if UIScreen.mainScreen().respondsToSelector(Selector("scale")) && UIScreen.mainScreen().scale >= 2.0 { // code executed only on Retina device } 

बस @sickp के उत्तर को गठबंधन करने के लिए और @ n13 से निम्नलिखित टिप्पणी को मैंने एक UIScreen श्रेणी में बनाया जो अच्छी तरह से काम करने लगता है चेक पहली बार किया जाता है जब आप इसे कॉल करते हैं और फिर बाद में कॉल के लिए सहेजा जाता है।

 @interface UIScreen (RetinaCheck) + (BOOL)retinaScreen; @end static BOOL isRetinaScreen = NO; static BOOL didRetinaCheck = NO; @implementation UIScreen (RetinaCheck) + (BOOL)retinaScreen { if (!didRetinaCheck) { isRetinaScreen = ([[self mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([self mainScreen].scale == 2.0)); didRetinaCheck = YES; } return isRetinaScreen; } @end 

किसी के लिए उपयोगी हो सकता है

 // .h UIKIT_EXTERN bool isRetinaDisplay(); // .m bool isRetinaDisplay() { static bool flag; #ifdef __BLOCKS__ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { flag = [[UIScreen mainScreen] scale] > 1.0; } else { flag = false; } }); #else static bool onceToken; if(onceToken == false) { onceToken = true; if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { flag = [[UIScreen mainScreen] scale] > 1.0; } else { flag = false; } } #endif return flag; } 

इसे इस्तेमाल करे

 if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0)) { // Retina display NSLog(@"---------------Retina display"); } else { // non-Retina display NSLog(@"---------------non-Retina display"); } 

सबसे आम उपयोग के मामलों की सरलता के लिए प्राइमोलवेयर के संशोधित संस्करण। मैं तेज 2.2 पर हूँ, लेकिन इससे कोई फर्क नहीं पड़ेगा।

 extension UIScreen { static var isRetina: Bool { return screenScale >= 2.0 } static var isRetinaHD: Bool { return screenScale >= 3.0 } static var screenScale:CGFloat { return UIScreen.mainScreen().scale } } 

तो बस उन्हें इस तरह का उपयोग करें

 print(UIScreen.isRetina) print(UIScreen.isRetinaHD) print(UIScreen.screenScale) 

यह मेरे लिए काम किया

 if((UIScreen .mainScreen().scale) < 2.0) { NSLog("no retina"); } else { NSLog("retina"); }