আইফোন অ্যাপে কীভাবে ডিভাইসের স্ক্রিন রেজোলিউশন সনাক্ত করতে হয়


130

আইফোন অ্যাপে, ডিভাইসে অ্যাপ চালানোর সময় কোন অ্যাপটিতে চলছে সেই ডিভাইসের স্ক্রিন রেজোলিউশন কীভাবে সনাক্ত করবেন?

উত্তর:


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

এটি আপনাকে পুরো পর্দার রেজোলিউশনটি পয়েন্টগুলিতে দেবে, সুতরাং এটি আইফোনের জন্য সাধারণত 320x480 হবে। যদিও আইফোন 4 এর অনেক বড় স্ক্রিন আকার রয়েছে তবে এখনও iOS 640x960 এর পরিবর্তে 320x480 ফিরিয়ে দেয়। এটি বেশিরভাগ পুরানো অ্যাপ্লিকেশনগুলি ভেঙে যাওয়ার কারণে।

CGFloat screenScale = [[UIScreen mainScreen] scale];

এটি আপনাকে স্ক্রিনের স্কেল দেবে। যে সমস্ত ডিভাইসগুলিতে রেটিনা ডিসপ্লে থাকে না তাদের জন্য এটি 1.0f ফেরত দেবে, আর রেটিনা ডিসপ্লে ডিভাইসগুলি একটি 2.0f প্রদান করবে এবং আইফোন 6 প্লাস (রেটিনা এইচডি) একটি 3.0f দেবে।

এখন আপনি যদি iOS ডিভাইসের স্ক্রিনটির পিক্সেল প্রস্থ এবং উচ্চতা পেতে চান তবে আপনাকে কেবল একটি সাধারণ কাজ করতে হবে।

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

স্ক্রিনের স্কেল দিয়ে গুণ করে আপনি আসল পিক্সেল রেজোলিউশন পাবেন।

আইওএসে পয়েন্ট এবং পিক্সেলের মধ্যে পার্থক্য সম্পর্কে একটি ভাল পঠন এখানে পড়া যায়

সম্পাদনা: (সুইফ্টের জন্য সংস্করণ)

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 প্লাসের ক্ষেত্রে এটি বেশ 'আসল পিক্সেল' রেজোলিউশন নয় cept এটা তোলে রেজল্যুশন সবকিছু হয় , কোডে (যেমন OpenGL ব্যতীত) এ অনুষ্ঠিত একটি 3x স্কেল দিয়ে, কিন্তু তারপর যে নিচে- নমুনা এ 1080 এক্স 1920 অনেক ভাল ব্যাখ্যা এক স্ক্রিন নেটিভ রেজল্যুশন অভ্যন্তরীণভাবে লিংক
RobP

দুঃখের বিষয়, এটি আপনাকে পর্দার উপাদানগুলির "সত্য" মাত্রা দেবে না, কারণ অ্যাপল "পয়েন্ট" এবং "স্কেল" এর ধারণাগুলি কেবল একটি আনুমানিকই। (আইফোন বনাম আইপ্যাড বনাম আইপ্যাড মিনিতে চশমা দেখুন)) সম্ভবত বিদ্যমান বিভিন্ন সংমিশ্রণের সংখ্যা হ্রাস করার জন্য। আমি মনে করি আইফোন 6 প্লাস বিশেষত খুব দূরে।
টুলমেকারস্টেভ

প্রকৃতপক্ষে 6+ খুব বেশি দূরে নয়: উচ্চতা 736 pts / 160 (pt / in) = 4.60 "যৌক্তিক উচ্চতা; প্রকৃত পর্দার উচ্চতা 4.79"; 5% ত্রুটি। আইপ্যাড অনেক দূরে বন্ধ: উচ্চতা 1024 pts / 160 (pt / in) = 6.40 "যৌক্তিক উচ্চতা; প্রকৃত পর্দার উচ্চতা 7.76"; 20% ত্রুটি। আইপ্যাড মিনি ঠিক আছে; এটি মূল আইফোন ঘনত্বের সাথে মেলে। বেশিরভাগ উদ্দেশ্যে, এর অর্থ হল আইপ্যাড মিনিতে আইপ্যাড সফ্টওয়্যারটি পরীক্ষা করা উচিত (এটি ব্যবহারযোগ্য কিনা তা নিশ্চিত করার জন্য), তবে কেবল এই বিষয়টি উপেক্ষা করুন যে বেশিরভাগ আইপ্যাডগুলি চিত্রটি 20% (আইফোন বা আইপ্যাড মিনি এর সাথে তুলনায়) দ্বারা ম্যাগনিফাই করে।
টুলমেকারস্টেভ

1
@ রবপি আপনি আইফোন 6 প্লাসের জন্য কীভাবে এটি সমাধান করবেন?
ক্র্যাশলোট

1
@ ক্র্যাশলোট নিশ্চিত হন না যে আপনি 'এর সমাধান' দ্বারা কী বোঝাতে চাইছেন? আপনি যখন স্ক্রিন রেজোলিউশন পাবেন তখন এটি আপনার মনে থাকা উদ্দেশ্যটির উপর নির্ভর করে। প্রোগ্রামারদের হিসাবে, Jman012 এর উত্তর সঠিক এবং আপনি একটি 1242x2208 বা 2208x1242 স্পেসে রেন্ডার করতে পারেন। হেক, এটি এমনকি রেজোলিউশন যা আমরা লঞ্চ চিত্রগুলি সরবরাহ করি। হার্ডওয়্যারটি তখন এই চিত্রটির নমুনা নিচে ফেলে এবং এটি একটি ছোট পিক্সেল গণনা সহ একটি দৈহিক স্ক্রিনে প্রদর্শন করে এমন একটি বাস্তবায়ন বিবরণ হবে যা আমাদের কোড সম্পর্কে অবগত হওয়া উচিত নয়।
রবপি

21

ইউআইএস স্ক্রীন শ্রেণি আপনাকে পয়েন্ট এবং পিক্সেলগুলিতে স্ক্রিন রেজোলিউশন সন্ধান করতে দেয়।

পর্দার রেজোলিউশনগুলি পয়েন্ট বা পিক্সেলগুলিতে পরিমাপ করা হয়। এটি কখনই পর্দার আকারের সাথে বিভ্রান্ত হওয়া উচিত নয়। একটি ছোট পর্দার আকার উচ্চতর রেজোলিউশন হতে পারে।

পয়েন্টগুলিতে ইউআইএস স্ক্রিনের 'সীমানা। প্রস্থ' আয়তক্ষেত্রাকার আকার এখানে চিত্র বর্ণনা লিখুন

ইউআইএস স্ক্রিনের 'নেটিটিবাউন্ডস উইথ' রিটার্ন আয়তক্ষেত্রাকার আকার পিক্সেলগুলিতে T এই মানটি পিপিআই হিসাবে চিহ্নিত হয় (প্রতি ইঞ্চি পয়েন্ট)। কোনও ডিভাইসে চিত্রের তীক্ষ্ণতা এবং স্পষ্টতা দেখায়। এখানে চিত্র বর্ণনা লিখুন

এই সমস্ত মান সনাক্ত করতে আপনি ইউআইএস স্ক্রীন শ্রেণি ব্যবহার করতে পারেন।

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

অ্যাপ ডেলিগেটে এটি ব্যবহার করুন: আমি স্টোরিবোর্ড ব্যবহার করছি

- (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

আইওএস 8 এর জন্য আমরা ঠিক এটি ব্যবহার করতে পারি [UIScreen mainScreen].nativeBounds:

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

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

4

ইউআইএস স্ক্রিন রেফারেন্স দেখুন: http://developer.apple.com/library/ios/#docamentation/uikit/references/UIScreen_Class/References/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");
}

আমি যদি এটিকে এনএসএলগে রাখছি (@ "% ডি", [[ইউআইস স্ক্রিন মেনস্ক্রিন] স্কেল]) জবাব দেওয়ার জন্য থেক্স; এটি 0 ...... এবং এনএসএলগ দেয় (@ "% @", [[ইউআইস্ক্রিন মূলস্ক্রিন] স্কেল]); এটি নীল Pls দেয় আমাকে স্ক্রিন রেজোলিউশন কীভাবে পেতে হয় বা এটি সিমুলেটারে চালানোর সময় সঠিক রেজোলিউশন দিচ্ছে কিনা তা পরীক্ষা করে তা জানতে দেওয়া হয়
ios

2
চেষ্টা করুনNSLog(@"%f",[[UIScreen mainScreen] scale]);
ভাইকিংগোন্ডো

0

এই কোডটি ব্যবহার করুন এটি কোনও ধরণের ডিভাইসের স্ক্রিন রেজোলিউশন পেতে সহায়তা করবে

 [[UIScreen mainScreen] bounds].size.height
 [[UIScreen mainScreen] bounds].size.width
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.