2011-08-27 11 views
10

क्या iPad IOS अनुप्रयोग iPhone में चल रहा है कि क्या, iPhone रेटिना डिस्प्ले, या पता लगाने के लिए कोड है?IOS अनुप्रयोग iPhone, iPhone रेटिना डिस्प्ले, या iPad में चल रहा है कि क्या पता लगाने के लिए कोड क्या है?

पृष्ठभूमि:

  • अपने iPhone आवेदन मैं XCode लक्ष्य/सारांश पृष्ठ में लिए विशिष्ट छवियों को परिभाषित किया है के लिए

    : iPhone लांच छवि, iPhone रेटिना प्रदर्शन प्रक्षेपण छवि, आईपैड चित्र & आईपैड परिदृश्य।

  • मुख्य दृश्य में एक यूआईएममेज व्यू सबव्यूव है जो मैं पृष्ठभूमि छवि के लिए उपयोग करता हूं - वर्तमान में मैं इसे आईफोन लॉन्च छवि के लिए उपयोग की जाने वाली छवि का चयन करके एक्सकोड (प्रोग्रामेटिक रूप से नहीं) में निर्दिष्ट कर रहा हूं।

तो मैं कैसे बता करने के लिए जो एक मैं भीतर चल रहा हूँ ताकि viewDidLoad में मैं उचित संकल्प पृष्ठभूमि छवि लोड कर सकते हैं पूछ रहा हूँ। तो फिर वहाँ एप्लिकेशन स्टार्टअप के लिए पृष्ठभूमि छवि के बीच एक समेकित संक्रमण, और एप्लिकेशन मुख्य स्क्रीन की पृष्ठभूमि एक बार यह शुरू कर दिया है होना चाहिए।

उत्तर

18

आप [[UIDevice currentDevice] userInterfaceIdiom] का उपयोग निर्धारित करने के लिए आप एक iPhone/आइपॉड टच या एक iPad पर चला रहे हैं कर सकते हैं।

वहाँ अक्सर है एक रेटिना प्रदर्शन पर सीधे आप कर रहे हैं कि क्या यह निर्धारित करने के क्योंकि UIImage हैंडल कि स्वचालित रूप से जब आप imageNamed का उपयोग करें और अपने उच्च संकल्प छवि फ़ाइल नाम को संलग्न "@ 2x" (Supporting High-Resolution Screens आरेखण और मुद्रण गाइड में देखने की कोई जरूरत नहीं iOS के लिए)।

तुम सच में जो संकल्प स्क्रीन है पता है, का उपयोग UIScreen के scale विधि करने के लिए की जरूरत है।

+8

टिप्पणी '[[UIDevice currentDevice] userInterfaceIdiom]' 'UIUserInterfaceIdiomPho के खिलाफ जाँच की जा सकती ne' या 'UIUserInterfaceIdiomPad' –

0

@interface UIDevice

के साथ-साथ -[UIImage scale] पर दस्तावेज़ देखें (हालांकि वहाँ बेहतर संसाधनों, जो की संभावना तैनात किया जाएगा रहे हैं)।

8

यहाँ 2 उपयोगी वर्ग तरीकों कि मैं का उपयोग करें, जो सीधे आपके सवाल का जवाब है - जो आप लाइन और नीचे का उपयोग करना चाहते हो सकता है:

+(BOOL)isPad 
{ 
#ifdef UI_USER_INTERFACE_IDIOM 
    return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; 
#endif 
    return NO; 
} 

+(BOOL)hasRetinaDisplay 
{ 
    // checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4. 
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) 
     return YES; 
    else 
     return NO; 
} 
+1

बहुत अच्छा ल्यूक ... – Greg

0

यहाँ कॉपी करने के लिए कुछ कोड और पेस्ट है ...

bool runningOniPhone; 
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    runningOniPhone = TRUE; 
} else { 
    runningOniPhone = FALSE; 
} 
1

स्विफ्ट समाधान के लिए:

if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)  
{ 
     // Ipad 
} 
else 
{ 
     // Iphone 
}