2012-05-28 15 views
5

मुझे एक समस्या है जिसे मैं समझने में सक्षम नहीं हूं। मेरे पास एक ऐप है जो सामने से एक और पीछे कैमरे से एक तस्वीर लेगा, फिर उन्हें एक साथ मिलाएं। हालांकि मैं जहाँ मेरे UIButtons शुरू से रेटिना छवियों के रूप में लोड नहीं किया जा जाएगा में समस्या आ रही हैलोड रेटिना (उच्च गुणवत्ता) छवियां प्रोग्रामेटिक रूप से (बटन पर)

ऐप्लिकेशन का नाम GroupCam

है। यदि मैं उन्हें इंटरफ़ेस बिल्डर पर @ 2x के रूप में सेट करता हूं तो वे उच्च गुणवत्ता में दिखाई देते हैं लेकिन एक बार जब मैं प्रोग्रामिंग रूप से पुनः लोड करता हूं तो इसके बजाय निम्न संस्करण दिखाई देंगे।

यह इस तथ्य के कारण है कि, एक तस्वीर लेने के बाद और स्क्रीन बटन छवियों को बदलने के बाद स्क्रीन बदल जाती है, लेकिन जब उपयोगकर्ता बैक बटन दबाता है तो कैमरा आइकन भयानक लगेंगे (क्योंकि निम्न गुणवत्ता वाले संस्करण लोड किए जा रहे हैं) ।

कृपया निम्न चित्र:

पहले स्क्रीन: केवल ऊपरी दाएँ बटन क्योंकि मैं कैमरा फ्लैश के मूल्य और "लोड हो रहा" प्रोग्राम के इसी छवि जाँच कर रहा हूँ विकृत प्रकट होता है।

First Screen

दूसरी स्क्रीन: उपयोगकर्ता किसी अन्य स्क्रीन में ले जाया गया और पहले एक करने के लिए वापस आ गया है, सभी बटन पुनः लोड कर रहे थे और वे अब सभी विकृत देखो।

Second Screen

किसी को यह क्यों हो रहा है मैं वास्तव में यह जानना चाहेंगे है की किसी भी विचार है!

धन्यवाद।

संपादित करें:

इस प्रकार मैं छवियों को लोड करता हूं।

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] 
          forState:UIControlStateNormal]; 

मैं इंटरनेट पर कहीं पढ़ा है कि यह कर स्वतः ही छवि का सबसे उपयुक्त संस्करण लोड होगा।

मैं भी इस कोशिश की, लेकिन परिणाम एक ही है:

[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal]; 
+1

मेरे पास एक ऐप में सामान्य और रेटिना छवियों का उपयोग करके अच्छे परिणाम हुए हैं। तो मैं आपको सुझाव दूंगा कि आप इन छवियों के सामान्य समाधान का चयन करें, और उन्हें अपनी परियोजना में शामिल न करें (तीसरे दाएं फलक के माध्यम से - बस चेकबॉक्स को अचयनित करें)। अब आपके ऐप में केवल रेटिना छवियां हैं। खैर, अगर चीजें खराब होती हैं, तो आपके ऐप में कुछ खराब हो जाता है। [UIImage imageNamed: foo.png] के साथ कुछ समस्या है। यदि आप उस छवि को बदलते हैं, तो उस छवि के सभी बाद के उपयोगकर्ताओं को संशोधित छवि मिलती है। UIImage छवि को दोबारा पढ़ें नाम: –

+2

इसलिए मैंने आपको अभी प्रश्न पढ़ा है, और मैंने अभी यह कथन देखा है: "अगर मैं उन्हें इंटरफ़ेस बिल्डर पर" @ 2x "के रूप में सेट करता हूं"। इसलिए, आईबी में, आपने अपने नाम "[email protected]" के रूप में दर्ज किए हैं, और यह काम करता है। तो केवल एक चीज मैं सोच सकता हूं कि आपकी समस्या "@ 2x" का प्रारूप हो सकती है। क्या आप सुनिश्चित हैं कि आपने उन छवियों का सही नाम दिया है - "[email protected]", NOT & 2x.png इत्यादि। ऐसा लगता है जैसे आईओएस को हाय रीज़ फाइल नहीं दिखती है और यही कारण है कि मैं सोच सकता हूं कि यह समझाएगा । तो आईबी में "@ 2x" को हटाने का प्रयास करें, और देखें कि क्या होता है। मैं शर्त लगाता हूं कि आप हर समय सभी कम रेज प्राप्त करेंगे। –

+0

हां वे स्वरूपित हैं और सही ढंग से नामित हैं। छवियों को एचडी में पूरी तरह से ठीक से लोड किया जाएगा, केवल समस्या तब होती है जब मैं उन्हें प्रोग्रामिक रूप से लोड करता हूं। आईओएस कम परिभाषा को लोड करने का फैसला करता है। – Pochi

उत्तर

3

अपने अनुप्रयोग वापस कैमरे से सामने वाले कैमरे से एक तस्वीर और एक लेने और उन्हें एक साथ मर्ज है, तो डिवाइस में सामने की आवश्यकता है कैमरा का सामना करना सामने वाले कैमरों वाले सभी आईओएस डिवाइसों में रेटिना डिस्प्ले भी है (जब तक आप आईपैड 2 के लिए विकास नहीं कर रहे हैं, लेकिन यह एक अलग कहानी है) इसलिए आपको वास्तव में सामान्य छवियां नहीं लेनी चाहिए, इसलिए आपकी सभी छवियां होनी चाहिए रेटिना छवियों। यदि कोई सामान्य छवियां नहीं हैं, तो यह समस्या बिल्कुल नहीं होनी चाहिए। बैकअप प्रति बनाएं, और सभी सामान्य छवियों को हटाने का प्रयास करें, और फिर कोशिश करें। चूंकि आप UIImage ImageNamed का उपयोग कर रहे हैं: @ "ImageName", जैसा कि आपने कहा था, स्वचालित रूप से छवि का चयन करना चाहिए! शुभ लाभ!

+0

मैं थोड़ी उम्मीद कर रहा था कि ऐसा क्यों हो रहा है लेकिन यह एक समाधान प्रतीत होता है। – Pochi

+0

@LuisOscar क्षमा करें, यह मेरा सबसे अच्छा अनुमान था :(bugreport.apple.com पर एक बग की रिपोर्ट करने का प्रयास करें। – sridvijay

4

सबसे पहले, यह संभवतः यह सत्यापित करने लायक है कि कम-रेज संस्करण वास्तव में प्रदर्शित किए जा रहे हैं। मैं हाल ही में एक समान धारणा के लिए कूद गया था, छवि के निम्न-संस्करण संस्करण को कुछ अलग के साथ बदल दिया, और पुष्टि की कि हाय-रेज संस्करण वास्तव में प्रदर्शित किया जा रहा था, लेकिन विकृत हो रहा था।

मेरे वास्तविक समस्या है, मैं

<uibutton_superview>.layer.shouldRasterize = YES;

निर्धारित किया था बटन पूर्वजों इस सेट के किसी भी, यह संभावना है आपकी समस्या हो सकता है।

3

छवियों के फ़ाइल नामों का मामला सिम्युलेटर पर कोई फर्क नहीं पड़ता, लेकिन डिवाइस पर करता है।

सभी संगत केस का उपयोग करें। Image.png और [email protected] पहचाने जाते हैं और सिम्युलेटर में एक साथ काम करेंगे लेकिन डिवाइस पर नहीं। image.png और [email protected] का उपयोग करें। या जब तक मामला मिलान हो रहा है तब तक आप .jpg का भी उपयोग कर सकते हैं।

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