iPhone ऐप में डिवाइस के स्क्रीन रिज़ॉल्यूशन का पता कैसे लगाएं


130

IPhone ऐप में, डिवाइस पर ऐप चलाते समय, डिवाइस के स्क्रीन रिज़ॉल्यूशन का पता कैसे लगाएं कि ऐप किस पर चल रहा है?

जवाबों:


349
CGRect screenBounds = [[UIScreen mainScreen] bounds];

यह आपको संपूर्ण स्क्रीन का रिज़ॉल्यूशन अंक में देगा, इसलिए यह आमतौर पर iPhones के लिए 320x480 होगा। भले ही iPhone4 में स्क्रीन का आकार ज्यादा बड़ा हो लेकिन iOS अभी भी 640x960 के बजाय 320x480 को वापस देता है। यह ज्यादातर पुराने अनुप्रयोगों को तोड़ने के कारण होता है।

CGFloat screenScale = [[UIScreen mainScreen] scale];

यह आपको स्क्रीन का पैमाना देगा। सभी डिवाइस जिनके पास रेटिना डिस्प्ले नहीं है, वे 1.0f लौटा देंगे, जबकि रेटिना डिस्प्ले डिवाइस 2.0f देंगे और iPhone 6 Plus (रेटिना एचडी) 3.0f देगा।

अब यदि आप आईओएस डिवाइस स्क्रीन की पिक्सेल चौड़ाई और ऊंचाई प्राप्त करना चाहते हैं, तो आपको बस एक सरल काम करने की आवश्यकता है।

CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);

स्क्रीन के पैमाने से गुणा करके आपको वास्तविक पिक्सेल रिज़ॉल्यूशन मिलता है।

IOS में पॉइंट और पिक्सल्स के अंतर पर एक अच्छी रीडिंग यहां पढ़ी जा सकती है

संपादित करें: (स्विफ्ट के लिए संस्करण)

let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)

4
सिवाय इसके कि यह आईफोन 6 प्लस के मामले में काफी 'वास्तविक पिक्सेल' रिज़ॉल्यूशन नहीं है। यह रिज़ॉल्यूशन सबकुछ है , जो कोड में (OpenGL को छोड़कर) एक 3x स्केल के साथ प्रस्तुत किया गया है, लेकिन फिर यह स्क्रीन के 1080 x 1920 के मूल रिज़ॉल्यूशन में आंतरिक रूप से नीचे-नमूना है। लिंक
RobP

अफसोस की बात है, यह आपको स्क्रीन पर तत्वों के "सही" आयाम नहीं देगा, क्योंकि Apple के "अंक" और "स्केल" की धारणाएं केवल एक सन्निकटन हैं। (देखें iPhone बनाम iPad बनाम iPad मिनी पर चश्मा।) संभवत: मौजूद विभिन्न संयोजनों की संख्या को कम करने के लिए। मुझे लगता है कि iPhone 6 प्लस विशेष रूप से दूर है।
ToolmakerSteve

वास्तव में 6+ बहुत दूर नहीं: ऊंचाई 736 पीटी / 160 (पीटी / इन) = 4.60 "तार्किक ऊंचाई; वास्तविक स्क्रीन ऊंचाई 4.79" है; 5% त्रुटि। iPad बहुत दूर है: ऊंचाई 1024 pts / 160 (pt / in) = 6.40 "तार्किक ऊंचाई; वास्तविक स्क्रीन ऊंचाई 7.76" है; 20% त्रुटि। iPad मिनी ठीक है; यह मूल iPhone घनत्व से मेल खाता है। अधिकांश उद्देश्यों के लिए, इसका मतलब है कि एक को iPad मिनी पर iPad सॉफ्टवेयर का परीक्षण करना चाहिए (यह सुनिश्चित करने के लिए कि यह प्रयोग करने योग्य है), तो बस इस तथ्य को अनदेखा करें कि अधिकांश iPads 20% (iPhone या iPad मिनी की तुलना में) छवि को बढ़ाते हैं।
ToolmakerSteve

1
@RobP तो आप iPhone 6 प्लस के लिए इसे कैसे हल करते हैं?
क्रैशहॉल

1
@ करशालोट को यकीन नहीं है कि 'हल' से आपका क्या मतलब है? यह उस उद्देश्य पर निर्भर करता है जब आप स्क्रीन रिज़ॉल्यूशन प्राप्त करते हैं। जहां तक ​​प्रोग्रामर की बात है, तो Jman012 का जवाब सही है और आप 1242x2208 या 2208x1242 स्पेस में रेंडर करते हैं। हेक, यह भी संकल्प हम पर प्रक्षेपण छवियों प्रदान करते हैं। तथ्य यह है कि हार्डवेयर तब इस छवि के नमूने लेता है और इसे एक छोटे पिक्सेल गणना के साथ एक भौतिक स्क्रीन पर प्रदर्शित करता है एक 'कार्यान्वयन विवरण' होगा जो हमारे कोड को भी पता नहीं होना चाहिए।
रॉब

21

UIScreen वर्ग आपको अंक और पिक्सेल में स्क्रीन रिज़ॉल्यूशन खोजने देता है।

स्क्रीन रिज़ॉल्यूशन पॉइंट्स या पिक्सेल में मापा जाता है। इसे स्क्रीन के आकार के साथ भ्रमित नहीं होना चाहिए। एक छोटे स्क्रीन आकार में उच्च रिज़ॉल्यूशन हो सकता है।

यूआईस्क्रीन के 'बाउंड्स.वॉइस' पॉइंट्स में आयताकार आकार लौटाते हैं यहाँ छवि विवरण दर्ज करें

Pixels.This मूल्य में यूआईस्क्रीन के 'nativeBounds.width' रिटर्न आयताकार आकार को पीपीआई (प्रति इंच बिंदु) के रूप में पाया जाता है। एक डिवाइस पर छवि की तीक्ष्णता और स्पष्टता दिखाता है। यहाँ छवि विवरण दर्ज करें

इन सभी मूल्यों का पता लगाने के लिए आप यूआईस्क्रीन का उपयोग कर सकते हैं।

Swift3

// Normal Screen Bounds - Detect Screen size in Points.
let width = UIScreen.main.bounds.width
let height = UIScreen.main.bounds.height
print("\n width:\(width) \n height:\(height)")

// Native Bounds - Detect Screen size in Pixels.
let nWidth = UIScreen.main.nativeBounds.width
let nHeight = UIScreen.main.nativeBounds.height
print("\n Native Width:\(nWidth) \n Native Height:\(nHeight)")

कंसोल

width:736.0 
height:414.0

Native Width:1080.0 
Native Height:1920.0

स्विफ्ट 2.x

//Normal Bounds - Detect Screen size in Points.
    let width  = UIScreen.mainScreen.bounds.width
    let height = UIScreen.mainScreen.bounds.height

// Native Bounds - Detect Screen size in Pixels.
    let nWidth  = UIScreen.mainScreen.nativeBounds.width
    let nHeight = UIScreen.mainScreen.nativeBounds.height

उद्देश्य सी

// Normal Bounds - Detect Screen size in Points.
CGFloat *width  = [UIScreen mainScreen].bounds.size.width;
CGFloat *height = [UIScreen mainScreen].bounds.size.height;

// Native Bounds - Detect Screen size in Pixels.
CGFloat *width  = [UIScreen mainScreen].nativeBounds.size.width
CGFloat *height = [UIScreen mainScreen].nativeBounds.size.width

8

App प्रतिनिधि में इसका उपयोग करें: मैं स्टोरीबोर्ड का उपयोग कर रहा हूं

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    //----------------HERE WE SETUP FOR IPHONE 4/4s/iPod----------------------

    if(iOSDeviceScreenSize.height == 480){          

        UIStoryboard *iPhone35Storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];

        // Instantiate the initial view controller object from the storyboard
        UIViewController *initialViewController = [iPhone35Storyboard instantiateInitialViewController];

        // Instantiate a UIWindow object and initialize it with the screen size of the iOS device
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        // Set the initial view controller to be the root view controller of the window object
        self.window.rootViewController  = initialViewController;

        // Set the window object to be the key window and show it
        [self.window makeKeyAndVisible];

        iphone=@"4";

        NSLog(@"iPhone 4: %f", iOSDeviceScreenSize.height);

    }

    //----------------HERE WE SETUP FOR IPHONE 5----------------------

    if(iOSDeviceScreenSize.height == 568){

        // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
        UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone5" bundle:nil];

        // Instantiate the initial view controller object from the storyboard
        UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];

        // Instantiate a UIWindow object and initialize it with the screen size of the iOS device
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        // Set the initial view controller to be the root view controller of the window object
        self.window.rootViewController  = initialViewController;

        // Set the window object to be the key window and show it
        [self.window makeKeyAndVisible];

         NSLog(@"iPhone 5: %f", iOSDeviceScreenSize.height);
        iphone=@"5";
    }

} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    // NSLog(@"wqweqe");
    storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];

}

 return YES;
 }

5

IOS 8 के लिए हम इसका उपयोग कर सकते हैं [UIScreen mainScreen].nativeBounds, जैसे:

- (NSInteger)resolutionX
{
    return CGRectGetWidth([UIScreen mainScreen].nativeBounds);
}

- (NSInteger)resolutionY
{
    return CGRectGetHeight([UIScreen mainScreen].nativeBounds);
}

4

UIScreen संदर्भ देखें: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScreen_Class/Reference/UIScreen.html

if([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")])
{
    if ([[UIScreen mainScreen] scale] < 1.1)
        NSLog(@"Standard Resolution Device");

    if ([[UIScreen mainScreen] scale] > 1.9)
        NSLog(@"High Resolution Device");
}

उत्तर के लिए thanx अगर मैं इसे NSLog (@ "% d", [[यूआईस्क्रीन मेनस्क्रीन] स्केल) में डाल रहा हूं; यह 0 देता है ...... और NSLog (@ "% @", [[UIScreen मेनस्क्रीन] स्केल]); यह एनआईएल देता है Pls मुझे पता है कि स्क्रीन रिज़ॉल्यूशन कैसे प्राप्त करें या यह कैसे परीक्षण करें कि क्या यह सिम्युलेटर पर चलने के दौरान सही रिज़ॉल्यूशन दे रहा है
ios

2
कोशिश करेंNSLog(@"%f",[[UIScreen mainScreen] scale]);
vikingosegundo

0

इस कोड का उपयोग करें यह किसी भी प्रकार के डिवाइस के स्क्रीन रिज़ॉल्यूशन को प्राप्त करने में मदद करेगा

 [[UIScreen mainScreen] bounds].size.height
 [[UIScreen mainScreen] bounds].size.width
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.