ऐप्पल की वेबसाइट का दावा है कि संकल्प 1080p: 1920 x 1080 है
हालांकि, Xcode (आज लॉन्च किए गए 8.0 जीएम) के लिए आवश्यक लॉन्च स्क्रीन 2208 x 1242 है।
कौन सही है?
ऐप्पल की वेबसाइट का दावा है कि संकल्प 1080p: 1920 x 1080 है
हालांकि, Xcode (आज लॉन्च किए गए 8.0 जीएम) के लिए आवश्यक लॉन्च स्क्रीन 2208 x 1242 है।
कौन सही है?
जवाबों:
IPhone 6+ 2208 × 1242 ( 736x414 अंक के साथ ) के आभासी रिज़ॉल्यूशन पर @ 3x परिसंपत्तियों का उपयोग करके आंतरिक रूप से प्रस्तुत करता है , फिर प्रदर्शन के लिए नमूने। रेटिना मैकबुक पर स्केल किए गए रिज़ॉल्यूशन का उपयोग करने के समान - यह उन्हें पिक्सेल परिसंपत्तियों के लिए एक अभिन्न मल्टीपल हिट देता है, जबकि अभी भी उदाहरण के लिए स्क्रीन पर 12 पीटी टेक्स्ट एक ही आकार के होते हैं।
तो, हां, लॉन्च स्क्रीन को उस आकार का होना चाहिए।
6, 5s, 5, 4S और 4 सभी 326 पिक्सेल प्रति इंच हैं, और सभी पिछले उपकरणों के लगभग 160 अंक प्रति इंच पर चिपकाने के लिए @ 2x परिसंपत्तियों का उपयोग करते हैं।
6+ 401 पिक्सल प्रति इंच है। तो यह काल्पनिक रूप से लगभग 2.46x संपत्ति की आवश्यकता होगी। इसके बजाय Apple @ 3x आस्तियों का उपयोग करता है और पूर्ण उत्पादन को उसके प्राकृतिक आकार के लगभग 84% तक घटा देता है।
व्यवहार में, Apple ने 87% से अधिक के साथ जाने का फैसला किया है, 1080 को 1242 में बदल दिया है। इसमें कोई संदेह नहीं है कि 84% के करीब संभव है कि अभी भी दोनों दिशाओं में अभिन्न आकार का उत्पादन किया गया था - 1242/1080 = 2208/1920 बिल्कुल , जबकि अगर आप 1080 को चालू करते हैं, तो 1286, कहते हैं, आपको किसी तरह 2286.22 पिक्सल को लंबवत रूप से अच्छी तरह से स्केल करना होगा।
[UIScreen mainScreen].bounds.size.height
पोर्ट्रेट में iPhone 6+ सिम्युलेटर में 736 देता है। यह 3. के पैमाने से विभाजित 2208 का मान है। चौड़ाई 414 है।
इसका उत्तर यह है कि पुराने ऐप 2208 x 1242 जूम मोड में चलते हैं। लेकिन जब एक ऐप नए फोन के लिए बनाया जाता है, तो उपलब्ध रिज़ॉल्यूशन इस प्रकार हैं: सुपर रेटिना एचडी 5.8 (आईफोन एक्स) 1125 x 2436 (458ppi) , रेटिना एचडी 5.5 ( आईफोन 6, 7, 8 प्लस ) 1242 x 2208 और रेटिना एचडी 4.7 ( iPhone 6 ) 750 x 1334 । यह प्रश्न में उल्लिखित भ्रम का कारण बन रहा है। नए फोन की पूर्ण स्क्रीन आकार का उपयोग करने वाले एप्लिकेशन बनाने के लिए, आकार में LaunchImages जोड़ें: 1125 x 2436, 1242 x 2208, 2208 x 1242 और 750 x 1334।
@ 3x स्केलिंग के साथ iPhone 11 प्रो मैक्स के लिए आकार , अंतरिक्ष को समन्वित करें: 414 x 896 अंक और 1242 x 2688 पिक्सेल, 458 पीपीआई, डिवाइस का भौतिक आकार 3.06 x 6.22 या 77.8 x 158.0 मिमी है। 6.5 "सुपर रेटिना एक्सडीआर डिस्प्ले।
@ 3x स्केलिंग के साथ iPhone 11 प्रो के लिए आकार , अंतरिक्ष को समन्वित करें: 375 x 812 अंक और 1125 x 2436 पिक्सेल, 458 पीपीआई, डिवाइस का भौतिक आकार 2.81 x 5.67 या 71.4 x 144.0 मिमी है। 5.8 "सुपर रेटिना एक्सडीआर डिस्प्ले।
@ 2x स्केलिंग के साथ iPhone 11 के लिए आकार , समन्वय स्थान: 414 x 896 अंक और 828 x 1792 पिक्सेल, 326 पीपीआई, डिवाइस का भौतिक आकार 2.98 x 5.94 या 75.7 x 150.9 मिमी है। 6.1 "तरल रेटिना एचडी डिस्प्ले।
@ 3x स्केलिंग के साथ iPhone X name मैक्स का आकार (Apple नाम: सुपर रेटिना एचडी 6.5 डिस्प्ले )), अंतरिक्ष को समन्वित करें: 414 x 896 अंक और 1242 x 2688 पिक्सेल, 458 पीपीआई, डिवाइस का भौतिक आकार 3.05 x 6.20 या 77.4 x 157.5 है। मिमी।
let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 Max Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 1242.0, 2688.0), scale: 3.0
@ 2x स्केलिंग के साथ iPhone X: का आकार (Apple नाम: सुपर रेटिना एचडी 6.1 "डिस्प्ले ), समन्वय स्थान: 414 x 896 अंक और 828 x 1792 पिक्सेल, 326 पीपीआई, डिवाइस का भौतिक आकार 2.98 x 5.94 इन / 75.7 x 150.9 मिमी ।
let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅁 Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 828.0, 1792.0), scale: 2.0
के लिए आकार iPhone X🅂 और iPhone एक्स के साथ @ 3x स्केलिंग (एप्पल नाम: सुपर रेटिना HD 5.8 "प्रदर्शन ):, अंतरिक्ष समन्वय 375 x 812 अंक और 1125 x 2436 पिक्सल, 458 ppi, डिवाइस शारीरिक आकार 2.79 x में 5.65 या 70.9 है x 143.6 मिमी।
let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 and X Screen bounds: (0.0, 0.0, 375.0, 812.0), Screen resolution: (0.0, 0.0, 1125.0, 2436.0), scale: 3.0
@ 3x स्केलिंग के साथ iPhone 6, 6S, 7 और 8 का आकार (Apple नाम: रेटिना एचडी 5.5 ), समन्वित स्थान: 414 x 736 अंक और 1242 x 2208 पिक्सेल, 401 पीपीआई, स्क्रीन भौतिक आकार 2.7 x 4.8 बनाम 68 x है। 122 मिमी । जब ज़ूमड मोड में चल रहा है, यानी बिना नए लॉन्चइमेज या सेटअप के आईफोन 6 प्लस में चुना गया है, तो देशी पैमाना 2.88 है और स्क्रीन 320 x 568 अंक है, जो कि आईफोन 5 देशी आकार है:
Screen bounds: {{0, 0}, {414, 736}}, Screen resolution: <UIScreen: 0x7f97fad330b0; bounds = {{0, 0}, {414, 736}};
mode = <UIScreenMode: 0x7f97fae1ce00; size = 1242.000000 x 2208.000000>>, scale: 3.000000, nativeScale: 3.000000
@ 2x स्केलिंग के साथ iPhone 6 और iPhone 6S का आकार (Apple नाम: रेटिना एचडी 4.7 ), अंतरिक्ष को समन्वित करें: 375 x 667 अंक और 750 x 1334 पिक्सेल, 326 पीपीआई, स्क्रीन भौतिक आकार 2.3 x 4.1 या 58% 104 मिमी है । जूम मोड में चलने पर, बिना नए LaunchImages के, स्क्रीन 320 x 568 अंक है, जो कि iPhone के मूल निवासी है:
Screen bounds: {{0, 0}, {375, 667}}, Screen resolution: <UIScreen: 0x7fa01b5182d0; bounds = {{0, 0}, {375, 667}};
mode = <UIScreenMode: 0x7fa01b711760; size = 750.000000 x 1334.000000>>, scale: 2.000000, nativeScale: 2.000000
और तुलना के लिए iPhone 5 640 x 1136, iPhone 4 640 x 960 है।
यहाँ मैं इस कोड की जाँच करता था (ध्यान दें कि nativeScale केवल iOS 8 पर चलता है):
UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);
नोट: LaunchImages अपलोड करें अन्यथा एप्लिकेशन ज़ूम मोड में चलेगा और सही स्केलिंग, या स्क्रीन आकार नहीं दिखाएगा। जूम मोड में nativeScale
और scale
एक समान नहीं होगा। एक वास्तविक डिवाइस पर आईफोन 6 प्लस पर स्केल 2.608 हो सकता है, भले ही वह ज़ूम मोड में नहीं चल रहा हो, लेकिन सिम्युलेटर पर चलने पर यह 3.0 का स्केल दिखाएगा।
वास्तविक / भौतिक आईफोन 6 प्लस रिज़ॉल्यूशन 1920x1080 है, लेकिन एक्सकोड में आप 2208x1242 रिज़ॉल्यूशन (736x414 अंक) के लिए अपना इंटरफ़ेस बनाते हैं और डिवाइस पर यह स्वचालित रूप से 1920x1080 पिक्सल तक कम हो जाता है।
iPhone संकल्प त्वरित संदर्भ:
Device Points Pixels Scale Physical Pixels PPI Ratio Size
iPhone XS Max 896x414 2688x1242 3x 2688x1242 458 19.5:9 6.5"
iPhone XR 896x414 1792x828 2x 1792x828 326 19.5:9 6.1"
iPhone X 812x375 2436x1125 3x 2436x1125 458 19.5:9 5.8"
iPhone 6 Plus 736x414 2208x1242 3x 1920x1080 401 16:9 5.5"
iPhone 6 667x375 1334x750 2x 1334x750 326 16:9 4.7"
iPhone 5 568x320 1136x640 2x 1136x640 326 16:9 4.0"
iPhone 4 480x320 960x640 2x 960x640 326 3:2 3.5"
iPhone 3GS 480x320 480x320 1x 480x320 163 3:2 3.5"
आपको शायद iOS 8 में लॉन्च छवियों का उपयोग करना बंद कर देना चाहिए और एक स्टोरीबोर्ड या नीब / xib का उपयोग करना चाहिए।
में Xcode 6 , खोलने File
मेनू और चुनें New
⟶ File...
⟶ iOS
⟶ User Interface
⟶ Launch Screen
।
फिर उस पर क्लिक करके अपने प्रोजेक्ट के लिए सेटिंग्स खोलें ।
में General
टैब, अनुभाग बुलाया में App Icons and Launch Images
, सेट Launch Screen File
आपने अभी बनाया फ़ाइलें (इस सेट हो जाएगा करने के लिए UILaunchStoryboardName
में info.plist
)।
ध्यान दें कि फिलहाल सिम्युलेटर केवल एक काली स्क्रीन दिखाएगा, इसलिए आपको एक वास्तविक डिवाइस पर परीक्षण करने की आवश्यकता है ।
अपने प्रोजेक्ट में लॉन्च स्क्रीन xib फ़ाइल जोड़ना:
एसेट कैटलॉग के बजाय लॉन्च स्क्रीन xib फ़ाइल का उपयोग करने के लिए अपनी परियोजना को कॉन्फ़िगर करना:
भौतिक डिवाइस पर, आईफोन 6 प्लस की मुख्य स्क्रीन की सीमा 2208x1242 है और देशीबॉडी 1920x1080 है । भौतिक प्रदर्शन के आकार में हार्डवेयर स्केलिंग शामिल है।
सिम्युलेटर पर, आईफोन 6 प्लस की मुख्य स्क्रीन की सीमाएं और देशी सीमाएं दोनों 2208x1242 हैं।
दूसरे शब्दों में ... वीडियो, ओपनजीएल, और CALayers
पिक्सेल के साथ सौदे पर आधारित अन्य चीजें डिवाइस पर वास्तविक 1920x1080 फ्रेम बफर (या सिम पर 2208x1242 ) से निपटेंगी । अंक के साथ काम करने वाली चीजें 2208x1242 (x3) सीमा से निपटेंगी और डिवाइस पर उचित रूप UIKit
से बढ़ेंगी ।
सिम्युलेटर के पास उसी हार्डवेयर तक पहुंच नहीं है जो डिवाइस पर स्केलिंग कर रहा है और सॉफ्टवेयर में इसका अनुकरण करने के लिए वास्तव में बहुत अधिक लाभ नहीं है क्योंकि वे हार्डवेयर की तुलना में अलग-अलग परिणाम उत्पन्न करेंगे। इस प्रकार यह nativeBounds
नकली डिवाइस की मुख्य स्क्रीन को भौतिक डिवाइस की मुख्य स्क्रीन की सीमा में सेट करने के लिए समझ में आता है ।
iOS 8 ने डेवलपर को UIScreen
( nativeScale
और nativeBounds
) को CADisplay
इसी के संकल्प को निर्धारित करने के लिए ( और ) जोड़ा UIScreen
।
मेरे जैसे उन लोगों के लिए जो आश्चर्यचकित हैं कि विरासत ऐप्स कैसे व्यवहार करते हैं, मैंने इस विषय पर थोड़ा परीक्षण और गणना की।
@ Hannes-sverrisson संकेत के लिए धन्यवाद, मैंने इस धारणा पर शुरुआत की कि एक विरासत ऐप को iPhone 6 और iPhone 6 प्लस में 320x568 दृश्य के साथ व्यवहार किया जाता है।
परीक्षण एक साधारण काली पृष्ठभूमि के bg@2x.png
साथ एक सफेद सीमा के साथ किया गया था । पृष्ठभूमि का आकार 640x1136 पिक्सेल है, और यह 1 पिक्सेल की आंतरिक सफेद सीमा के साथ काला है।
नीचे सिम्युलेटर द्वारा दिए गए स्क्रीनशॉट हैं:
IPhone 6 स्क्रीनशॉट पर, हम सफेद बॉर्डर के ऊपर और नीचे 1 पिक्सेल मार्जिन और iPhone 6 स्क्रीनशॉट पर 2 पिक्सेल मार्जिन देख सकते हैं। यह हमें iPhone 6 प्लस पर 1242x2208 के बजाय 1242x2204 और 750x1334 के बजाय iPhone 6 पर 750x1332 का उपयोग किया हुआ स्थान देता है ।
हम मान सकते हैं कि वे मृत पिक्सेल iPhone 5 पहलू अनुपात का सम्मान करने के लिए हैं:
iPhone 5 640 / 1136 = 0.5634
iPhone 6 (used) 750 / 1332 = 0.5631
iPhone 6 (real) 750 / 1334 = 0.5622
iPhone 6 plus (used) 1242 / 2204 = 0.5635
iPhone 6 plus (real) 1242 / 2208 = 0.5625
दूसरा, यह जानना महत्वपूर्ण है कि @ 2x संसाधनों को न केवल iPhone 6 प्लस (जो कि @ 3x परिसंपत्तियों की अपेक्षा करता है) पर बढ़ाया जाएगा, बल्कि iPhone 6 पर भी। यह संभवतः इसलिए है क्योंकि संसाधनों को स्केल नहीं करना अप्रत्याशित लेआउट के कारण होता है, दृश्य के विस्तार के लिए।
हालाँकि, वह स्केलिंग चौड़ाई और ऊँचाई के बराबर नहीं है। मैंने इसे 264x264 @ 2x संसाधन के साथ आज़माया। परिणामों को देखते हुए, मुझे यह मानना होगा कि स्केलिंग सीधे पिक्सेल / अंक के अनुपात में होती है।
Device Width scale Computed width Screenshot width
iPhone 5 640 / 640 = 1.0 264 px
iPhone 6 750 / 640 = 1.171875 309.375 309 px
iPhone 6 plus 1242 / 640 = 1.940625 512.325 512 px
Device Height scale Computed height Screenshot height
iPhone 5 1136 / 1136 = 1.0 264 px
iPhone 6 1332 / 1136 = 1.172535 309.549 310 px
iPhone 6 plus 2204 / 1136 = 1.940141 512.197 512 px
यह ध्यान रखना महत्वपूर्ण है कि iPhone 6 स्केलिंग चौड़ाई और ऊंचाई (309x310) में समान नहीं है । यह उपरोक्त सिद्धांत की पुष्टि करता है कि स्केलिंग चौड़ाई और ऊंचाई में आनुपातिक नहीं है, लेकिन पिक्सेल / अंक अनुपात का उपयोग करता है।
आशा है कि ये आपकी मदद करेगा।
इस इन्फोग्राफिक की जाँच करें: http://www.paintcodeapp.com/news/iphone-6-screens-demystified
यह पुराने iPhones, iPhone 6 और iPhone 6 Plus के बीच के अंतर को स्पष्ट करता है। आप अंक, प्रदान किए गए पिक्सेल और भौतिक पिक्सेल में स्क्रीन आकार की तुलना देख सकते हैं। आपको अपने प्रश्न का उत्तर भी मिलेगा:
iPhone 6 प्लस - रेटिना डिस्प्ले एचडी के साथ। स्केलिंग फैक्टर 3 है और बाद में इमेज 2208 × 1242 पिक्सल से 1920 × 1080 पिक्सल तक डाउन हो गई है।
डाउनस्कूलिंग अनुपात 1920/2208 = 1080/1242 = 20/23 है। इसका मतलब है कि मूल रेंडर से प्रत्येक 23 पिक्सेल को 20 भौतिक पिक्सेल में मैप करना होगा। दूसरे शब्दों में छवि को उसके मूल आकार के लगभग 87% तक घटाया गया है।
अपडेट करें:
ऊपर उल्लिखित इन्फोग्राफिक का एक अद्यतन संस्करण है। इसमें स्क्रीन रिज़ॉल्यूशन अंतर के बारे में अधिक विस्तृत जानकारी है और यह अब तक के सभी आईफोन मॉडल को कवर करता है, जिसमें 4 इंच डिवाइस शामिल हैं।
http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
यहां तक कि अगर मैं आम तौर पर जॉन ग्रुबर के डारिंग फायरबॉल ब्लॉग के लहजे को पसंद नहीं करता हूं, तो उनका बड़ा आईफोन डिस्प्ले अनुमान अच्छी तरह से पढ़ा जा सकता है।
उन्होंने अनुमान लगाया लेकिन दोनों मॉडलों के लिए अंक और पिक्सेल में रिज़ॉल्यूशन दोनों को बिल्कुल सही पाया, सिवाय इसके कि उन्होंने (मुझे न तो) उम्मीद की थी कि एप्पल एक छोटे रिज़ॉल्यूशन के भौतिक प्रदर्शन और स्केल डाउन का निर्माण करेगा (विवरण @ टॉमी के जवाब में हैं)।
इसका सार यह है कि व्यक्ति को पिक्सल के संदर्भ में सोचना बंद कर देना चाहिए और अंकों के संदर्भ में सोचना शुरू कर देना चाहिए (यह कुछ समय के लिए मामला रहा है, यह हाल का आविष्कार नहीं है) और परिणामस्वरूप यूआई तत्वों का भौतिक आकार। संक्षेप में, दोनों नए iPhone मॉडल इस संबंध में सुधार करते हैं क्योंकि शारीरिक रूप से अधिकांश तत्व समान आकार के हैं, आप बस स्क्रीन पर उनमें से अधिक फिट कर सकते हैं (प्रत्येक बड़ी स्क्रीन के लिए आप अधिक फिट कर सकते हैं)।
मैं थोड़ा निराश हूं कि उन्होंने वास्तविक स्क्रीन रिज़ॉल्यूशन के आंतरिक रिज़ॉल्यूशन की मैपिंग 1: 1 से बड़े मॉडल के लिए नहीं रखी है।