2014-09-16 3 views
25

this question में पोस्ट किए गए नमूना लॉग में, परिणाम समान हैं। क्या किसी को पता है कि दोनों के बीच तार्किक अंतर होने का मतलब है?आईओएस 8 + में यूआईस्क्रीन पर -नेटिवस्केल और स्केल के बीच क्या अंतर है?

यहां तक ​​कि Apple's description भ्रमित है।

स्क्रीन ... के साथ जुड़े प्राकृतिक पैमाने कारक यह मान डिवाइस में अंतरिक्ष समन्वय तार्किक इस के अंतरिक्ष समन्वय पैमाने कारक डिफ़ॉल्ट से बदलने की जरूरत को दर्शाता है: यहाँ scale का वर्णन है स्क्रीन ...

यहाँ उनके description of nativeScale है:

na शारीरिक स्क्रीन

प्राकृतिक और देशी बीच क्या अंतर है के लिए ेश्य पैमाने कारक?

+0

ज्यादा नहीं, मैं कहूंगा। यह भ्रमित है। – trojanfoe

+0

इसके अलावा उन दोनों और 'UIView' की' सामग्री ScaleFactor' के बीच क्या अंतर है? – adib

उत्तर

18

nativeBounds और nativeScale गुण ज्यादातर ओपन के साथ प्रयोग के लिए और वास्तविक पिक्सेल आकार और प्रतिनिधित्व कर रहे हैं अंक करने के लिए पिक्सल कारक स्केलिंग है कि आप ठीक स्क्रीन के संकल्प को आकर्षित करने के लिए उपयोग करना चाहते हैं, तो आपको अतिरिक्त से बचने के लिए अनुमति देता है वर्चुअल 1242 × 2208 आकार पर ड्राइंग की प्रतिपादन लागत। उदाहरण के लिए, एक CAEAGLLayer साथ, आप यह करते हैं चाहते हैं:

theGLLayer.contentsScale = [UIScreen mainScreen].nativeScale; 

... और उसके बाद ही nativeBounds के आकार में अपनी सामग्री प्रस्तुत करने के लिए है, अर्थात 1080 × 1920।

उस प्रश्न में नमूना लॉग सिम्युलेटर से हैं, जो हमेशा एक वास्तविक डिवाइस के समान व्यवहार करने की गारंटी नहीं है।

+0

यह समझ में आता है। क्या आपके पास पुष्टि करने के लिए एक लॉग आसान होगा? यदि नहीं, तो मैं कुछ समय बाद इसके आसपास जा सकता था। –

+0

कोई भी जिसे मैं अभी तक साझा नहीं कर सकता, क्षमा करें :) –

+5

कोई चिंता नहीं। सिम्युलेटर से ऐसा लगता है कि स्केल/देशी स्केल का उपयोग यह इंगित करने के लिए किया जा रहा है कि ऐप 6-प्लस रिज़ॉल्यूशन पर मूल रूप से प्रतिपादन कर रहा है या 2x से बढ़ाया जा रहा है। तो उदाहरण के लिए, यदि मैं 2208x1242 लॉन्च छवि शामिल नहीं करता हूं, तो ऐप को 2x ऐप के रूप में लॉन्च किया जाता है, जो 3x तक बढ़ाया जाता है। इस मामले में, "देशी स्केल" को 3x के रूप में रिपोर्ट किया जा रहा है जबकि "स्केल" की रिपोर्ट 2x के रूप में की जा रही है। –

14

दोनों पैमाने और देशी स्केल आपको बताते हैं कि एक बिंदु कितने पिक्सल से मेल खाता है। लेकिन ध्यान रखें कि अंक intermediate buffer of pixels पर प्रस्तुत किए जाते हैं, जिसे स्क्रीन रिज़ॉल्यूशन से मेल खाने के लिए आकार दिया जाता है। तो, जब हम पूछते हैं, "1 pt कितने पिक्सल से मेल खाता है?" इसका मतलब मध्यवर्ती पिक्सेल (स्केल) या अंतिम पिक्सल (देशी स्केल) हो सकता है।

आईफोन प्लस पर, स्केल 3 है, लेकिन देशी स्केल 2.6 है। ऐसा इसलिए है क्योंकि सामग्री 3x (1 बिंदु = 3 पिक्सल) पर प्रदान की जाती है लेकिन फिर परिणामी बिटमैप को घटाया जाता है, जिसके परिणामस्वरूप 1 बिंदु = 2.6 पिक्सल होता है।

तो इंटरमीडिएट बिटमैप के साथ स्केल स्केल करता है, और देशी स्केल अंतिम बिटमैप से संबंधित है।


यह डिस्प्ले ज़ूम के बिना है। यदि आप डिस्प्ले ज़ूम सक्षम करते हैं, तो स्केल 3 वही रहता है, क्योंकि इंटरमीडिएट बफर अभी भी 1 पॉइंट = 3 पिक्सेल पर प्रस्तुत किया जाता है। लेकिन देशी पैमाने 2.8 हो जाता है।

तो, यदि आप भौतिक स्क्रीन की जांच करना चाहते हैं, तो पैमाने का उपयोग करें।उदाहरण के लिए, आप एक ऐप्लिकेशन है जो केवल iPhone प्लस पर चलता है, तो आप कर सकता है:

if scale != 3 { 
    print("Not supported") 
} 
नहीं

:

if nativeScale != 2.6 { 
    print("Not supported") 
} 

दूसरा कोड टुकड़ा क्या उम्मीद थी क्या करना है जब उपयोगकर्ता सक्षम बनाता है विफल रहता है ज़ूम प्रदर्शित करें।

संबंधित मुद्दे