ios - डिवाइस पर लॉन्च स्क्रीन में UIImageView लापता चित्र




objective-c launch-screen (20)

मेरे पास एक ऐप है जो iOS8 का समर्थन करता है और बाद में, Xcode 7 में बनाया गया है और मैं लॉन्च स्क्रीन के लिए XIB का उपयोग कर रहा हूं (मेरे पास लॉन्च छवियां नहीं हैं)। इस दृश्य में ऐप वर्जन के साथ एक एकल उबेलबेल और 2 UIImageViews चित्र हैं जो दोनों Images.xcassets में मौजूद हैं: एक लोगो और एक स्प्लैश छवि।

जब मैं एप्लिकेशन लॉन्च करता हूं, तो यूबेल और लोगो की छवि सही ढंग से दिखाई देती है, लेकिन यदि मैं iOS9 के साथ iPad Air 2 पर ऐप चलाता हूं तो स्प्लैश इमेज नहीं होती है। मैंने आईपैड 2, आईपैड एयर और आईपैड एयर 2 के लिए एक एयर और एक मिनी रनिंग iOS8, और iOS9 सिमुलेटर पर परीक्षण किया है और उन सभी में छवि सही ढंग से दिखाई देती है।

मैंने यह देखने के लिए कुछ बुनियादी समस्याएँ चलाईं कि क्या मैं यह पता लगा सकता हूँ कि क्या चल रहा है, लेकिन मैं इसे हल नहीं कर पाया हूँ और एकमात्र अंतर मैं उस छवि के बीच देख सकता हूँ जो काम कर रही है और जो विफल हो रही है वह है जब मैंने इसे जोड़ा संपत्ति ...

यहाँ मैं क्या जानता हूँ की एक किस्म है:

  • छप छवि के लिए UIImageView सही जगह पर, सही आकार में है। मैं यह बता सकता हूं क्योंकि मैंने यह सुनिश्चित करने के लिए इसकी पृष्ठभूमि का रंग हरा कर दिया है। दृश्य वहाँ है, लेकिन छवि दिखाई नहीं देती है। इसलिए मैं मान रहा हूं कि यह नजरिया दोषपूर्ण नहीं है।

  • लोगो छवि का उपयोग करने के लिए UIImageView को सेट करना भी लोगो छवि का उपयोग करता है जिससे लोगो छवि दृश्य के लिए सही स्थान पर दिखाई देती है। इससे मुझे यह भी लगता है कि दृश्य को दोष नहीं देना है।

  • UIImage जो मैं छप छवि दृश्य में उपयोग कर रहा हूं, ऐप में कहीं और उपयोग किया जाता है और उन अन्य दृश्यों में ठीक दिखाई देता है (लोगो छवि भी ऐप में कहीं और उपयोग की जाती है और ठीक दिखाई देती है)। इसलिए मैं मान रहा हूं कि छवि वैध है और इसे अन्य विचारों में दिखाई देना कोई समस्या नहीं है।

  • मैंने पुष्टि की है कि xcassets फ़ाइल में लोगो और स्प्लैश के लिए UIImages की सेटिंग समान हैं। वे यूनिवर्सल, किसी भी चौड़ाई और ऊंचाई, कई पैमाने के कारकों पर सेट हैं, डिफ़ॉल्ट रूप से प्रदान किए जाते हैं। एक अंतर है - लोगो में 1x, 2x और 3x स्केल होते हैं जबकि स्प्लैश इमेज में केवल 1x और 2x होते हैं, लेकिन मैंने भी UIVmages का उपयोग केवल 1x के साथ करने की कोशिश की है, और UIView में केवल 1x और 2x मान हैं और वे काम करते हैं (यदि वे थे तो कुछ समय पहले परियोजना में जोड़ा गया)।

  • मेरे xcassets में एक अलग आकार या प्रारूप (PNG और JPG) की एक और छवि जोड़ना और उस UIImage का उपयोग छप छवि के लिए UIImageView में भी प्रदर्शित करने में विफल रहता है।

  • XIB फ़ाइल में एक और UIImageView जोड़ना और इसे एक UIImage आवंटित करना जो पहले से ही xcassets कार्यों में था, छवि लोड हो रही स्क्रीन में दिखाई देती है।

  • लोगो के लिए उपयोग की जाने वाली छवि फ़ाइलों को कॉपी करना और उनका नाम बदलना और उन्हें प्रोजेक्ट में जोड़ना फिर उस UIImage को स्प्लैश दृश्य में उपयोग करना भी प्रदर्शित करने में विफल रहता है।

  • मैंने प्रोजेक्ट को साफ करने, विकास मशीन को फिर से शुरू करने और एयर 2 से ऐप को हटाने और समस्या होने पर इसे फिर से इंस्टॉल करने की कोशिश की है।

ये अंतिम तीन चरण मुझे विश्वास दिलाते हैं कि प्रोजेक्ट फ़ाइल के जीवनकाल में एक निश्चित बिंदु के बाद जोड़े गए चित्रों के साथ कुछ समस्या है। जब मैंने कल Xcode 7 में अपडेट किया था, तो स्प्लैश छवि मूल रूप से Xcode 6 में जोड़ी गई थी, लेकिन कुछ महीनों पहले लोगो की छवि (Xcode 6 में भी जोड़ी गई) जोड़ी गई थी।

मैं लोगो छवि और छप छवि के लिए json फ़ाइलों पर देखा है और वे एक ही प्रारूप है दिखाई देते हैं। मैं भी pbxproj फ़ाइल के माध्यम से मतभेद के लिए देख रहा है और मैं किसी भी नहीं देख सकता है।

इसलिए मैं सोच रहा था कि अगर किसी को भी अंदाजा हो कि लॉन्च स्क्रीन इन नई छवियों को प्रदर्शित नहीं कर सकती है जो मैं विशेष रूप से एयर 2 पर जोड़ रहा हूं? अन्य प्रश्न जो मैं उन छवियों से संबंधित पढ़ रहा हूं, जो सभी को दिखाई नहीं दे रही हैं या तो लॉन्च छवियों से संबंधित हैं, या संबंधित कक्षाओं वाले XIB फ़ाइलों में छवियां हैं, जिनमें से कोई भी यहां प्रासंगिक नहीं लगता है।


"मेरे लिए समाधान केवल यह सुनिश्चित करने के लिए था कि स्टोरीबोर्ड में UIImageView के लिए" क्लियर ग्राफिक्स संदर्भ "बॉक्स अनियंत्रित है। बस इसे बदलने से यह मेरे लिए तय हो गया।" कोई अन्य समाधान मेरे लिए काम नहीं किया। इसे ऐप्पल डेवलपर फोरम से प्राप्त करें


ImageView का चयन करें और फिर गुण निरीक्षक टैब> छवि दृश्य> छवि> छवि नाम में छवि एक्सटेंशन (.png या .jpg) को हटा दें।

लॉन्चस्क्रीन.स्टोरीबोर्ड पर छवि दिखाई नहीं देगी लेकिन यह डिवाइस में होगी। इसने मेरे लिए काम किया।


Xcode को पुनः आरंभ करना मेरे लिए था।

क्या नहीं किया:

  • साफ बिल्ड फ़ोल्डर
  • डिवाइस या सिम्युलेटर को पुनरारंभ करें (छवि या तो दिखाई नहीं दे रही थी)

अगली मेरी मदद की:

  • "स्क्रीन स्क्रीन लॉन्च करें" को दूसरे xib में बदलें
  • ऐप चलाएं
  • परिवर्तन जिब वापस

यह भी बहुत महत्वपूर्ण है : जांचें कि आपका xib दूसरे टैब में नहीं खोला गया है, जो इसे भी पैदा कर सकता है!


इसके अलावा 1. परियोजना छवि को हटा सकते हैं। छवि का नाम बदलें 3. परियोजना में फ़ाइल छवि जोड़ें

इसने मेरे लिए काम किया।


कई अन्य उत्तर यह सुझाव देते हैं कि रिबूटिंग डिवाइस और / या पुनर्निर्माण और / या पुन: स्थापित करना समाधान है।

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

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

@ सागा द्वारा यह SO उत्तर समाधान प्रदान करता है, लेकिन इसका कारण नहीं है, क्योंकि UIImageView डिवाइस पर लॉन्च स्क्रीन में गायब हैं (लेकिन सिम्युलेटर में नहीं)।

पृष्ठभूमि

हाल ही में मैंने अपनी "लॉन्च स्क्रीन.स्टोरीबोर्ड" फ़ाइल में एक कस्टम फ़ॉन्ट का उपयोग करने का प्रयास किया।

कारण @TimCamber द्वारा इस SO उत्तर को पढ़ने के बाद मैं स्पष्ट नहीं हो सका, जिसने मुझे थोड़ा और शोध और परीक्षण करने के लिए प्रेरित किया।

मेरे लॉन्च स्क्रीन स्टोरीबोर्ड फ़ाइल में कस्टम फ़ॉन्ट शामिल नहीं होने का कारण वही कारण है जो किसी संपत्ति कैटलॉग के भीतर की छवि शामिल नहीं है ...

ऐप आपकी लॉन्च स्क्रीन स्टोरीबोर्ड फ़ाइल से ऐप के लॉन्च स्क्रीन के पोर्ट्रेट और लैंडस्केप स्नैपशॉट तैयार करता है और (वर्तमान में) इसे आपके ऐप बंडल में यहां सहेजता है:

  • /Library/Caches/Snapshots/<<app_bundle>>/ और
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/

यह प्रक्रिया किसी भी कस्टम फोंट और एसेट कैटलॉग सहित किसी भी सहायक फ़ाइल को लोड करने से पहले पूरी होती है।

उपाय

जैसा कि @ जग के समाधान का पालन करके ऊपर उल्लेख किया गया है, शाब्दिक रूप से सभी आवश्यक है:

  1. (पुराना स्कूल) अपने ऐप के बंडल में एक छवि फ़ाइल (.PNG) जोड़ें (जैसा कि आप नीचे दिए गए स्क्रीनशॉट से देख सकते हैं मैंने एक इमेज सबडायरेक्ट में सहायक फाइल उपनिर्देशिका के तहत छवि फ़ाइल को जोड़ा है), और

  1. लॉन्च स्क्रीन स्टोरीबोर्ड फ़ाइल में आपके UIImageView ऑब्जेक्ट में वह छवि ...


छवि का नाम समस्या है। लॉन्च स्क्रीन स्टोरीबोर्ड के अंदर उपयोग किए गए छवि नाम का नाम बदलें। सुनिश्चित करें कि अल्फ़ान्यूमेरिक के अलावा किसी भी वर्ण का उपयोग न करें ("_- & @" का उपयोग न करें) मेरे लिए एक आकर्षण की तरह काम किया।


परिचालन के निम्नलिखित अनुक्रम ने Xcode 7.3.1 और iOS 9.3.4 पर मेरे लिए समस्या का समाधान किया:

  1. अपना निर्माण साफ करें (Your + ⇧ + K)
  2. Xcode बंद करें
  3. हार्ड रीसेट iOS डिवाइस (पावर + होम बटन रिबूट)
  4. Relaunch Xcode - तैयार होने के बाद इंडेक्सिंग को खत्म करें और डिवाइस पर बनाएं।

मुझे एक सरल लेकिन कट्टरपंथी समाधान मिला जो मेरे लिए काम कर रहा था:

1 - फाइल को डिलीट करें: LaunchScreen.storyboard और इसे ट्रैश में ले जाएं।

2 - उत्पाद -> स्वच्छ

3 - एक नई लॉन्च स्क्रीन फ़ाइल बनाएं जिसका नाम है: LaunchScreen.storyboard और इसमें अपनी छवियां डालें

4 - सहेजें और निर्माण करें

घंटे के लिए जटिल तरीकों की कोशिश करने के बाद मेरे लिए यह काम किया ... ऐसा लगता है कि मेरा LaunchScreen.storyboard लिखा-बंद था और बचाया नहीं जा सकता था या एक अजीब कैशिंग प्रक्रिया इसे रोक रही थी।


मुझे लगता है कि Assets.xcassets में लॉन्चस्क्रीन केवल समर्थन छवि है।


मेरा समाधान @iOS 11.x:

  • .png बजाय .jpg छवि का उपयोग करें। मुझे लगता है कि छवि फ़ाइल आकार मायने रखती है;
  • (वैकल्पिक रूप से) .xcassets बजाय प्रोजेक्ट डायरेक्टरी में इमेज फाइल रखें;

मेरे पास TestFlight से इंस्टॉल किए गए ऐप के लिए समान था। एप्लिकेशन हटाएं -> फिर iPhone को पुनरारंभ करें -> फिर मेरे लिए एप्लिकेशन कार्यों को पुनर्स्थापित करें। बस एप्लिकेशन को पुनर्स्थापित करें या बस पुनरारंभ डिवाइस मदद नहीं की।


मेरे लिए जो काम किया गया था वह सिम्युलेटर मेनू से सामग्री और सेटिंग्स ... का चयन करना था


मैं iPhone 5s डिवाइस का उपयोग करता हूं, इस समस्या को भी पूरा करता है।

मैं इसे ठीक करता हूं:

  • ड्राइव डेटा निकालें

  • प्रोजेक्ट को साफ करें

  • Xcode पुनरारंभ करें

  • मेरे डिवाइस से प्रोजेक्ट निकालें

  • 5s को पुनरारंभ करें।

मुझे लगता है कि मेमोरी का उपयोग करने के लिए Xcode का कुछ गलत है, Xcode कारण के लिए सिस्टम को थोड़ी मेमोरी आवंटित की जा सकती है क्योंकि Xcode दोपहर के भोजन के चित्र को विफल कर रहा है (मेरे कंप्यूटर पर, Xcode बंद हुए बिना कई हफ्तों तक चला है)


मैं एक ही मुद्दे के साथ है ImageView एक लॉन्च स्क्रीन स्टोरीबोर्ड। मैंने प्रोजेक्ट से चित्र का संदर्भ हटा दिया, मैंने अपनी छवि का नाम बदला और इसे फिर से प्रोजेक्ट में जोड़ा। सभी पूरी तरह से काम करता है।


मैं वही अनुभव करता हूं। मैं 300 पिक्सेल / इंच से छवि रिज़ॉल्यूशन को बदल देता हूं, इसे 72 में बदल देता हूं। यह मेरे लिए काम करता है।


यह आईओएस का एक बग लग रहा था। जैसे कभी-कभी सिस्टम एनीमेशन गायब हो जाता है।

अब मैं सिर्फ iPhone रिबूट करता हूं और यह मेरे लिए काम करता है।


यह बहुत महत्वपूर्ण है खाली होना चाहिए! Launch Screen File


Image.xcassets से चित्र लाएं और उन्हें फिर से प्रोजेक्ट में जोड़ें। इसने मेरे लिए काम किया।


बंद करें और फिर से चालू करें।

गंभीरता से, डिवाइस को पुनरारंभ करें - यही मेरे लिए तय है।

यहाँ क्या काम नहीं किया:

  • सफाई दीनवेदता
  • परियोजना की सफाई
  • डिवाइस से ऐप को अनइंस्टॉल करना
  • Xcode को पुनः आरंभ करना
  • कंप्यूटर को पुनरारंभ करना

पुराने अवलोकन:

दूसरों की तरह, यह:

  • सिम्युलेटर में ठीक काम करता है
  • उपकरणों पर काम करने के लिए उपयोग किया जाता है (iPhone 5S, iPad Air)
  • कोई कोड परिवर्तन (जीआईटी रीसेट - हेड के माध्यम से सत्यापित), फिर भी काम करना बंद कर दिया।

मुझे याद है कि पहला निर्माण शुरू होने के बाद जहां यह काम करना बंद कर रहा था, वहीं यह आईफोन को अनप्लग कर रहा था। (यदि यह संबंधित है तो निश्चित नहीं है।)

हालांकि, गिट रीसेट इसे ठीक नहीं कर रहा है (सभी साफ चरणों के साथ काम नहीं कर रहा है) मुझे बताता है कि यह कहीं और कैश किया जाना चाहिए। संभवत: .itignored फ़ाइलों में से एक में? (मैं Xcode परियोजनाओं के लिए Git उपेक्षा फ़ाइल का उपयोग कर रहा हूँ)

एक वर्कअराउंड जो एक UIImageView (UIView में तीन के लिए) के लिए काम करता है, लेकिन दूसरों के लिए नहीं, छवि को एक .xcassets फ़ाइल में डाल रहा है। सादे छवि फ़ाइल में बदलने से यह ठीक नहीं हुआ। (वास्तव में एक कैशिंग त्रुटि की तरह लगता है।)

अद्यतन: शीर्ष देखें - डिवाइस को पुनरारंभ करना यह निर्धारित है। मुझे लगता है कि डिवाइस पर ही गलत बिटमैप डेटा कैश किया जा रहा है।

रडार: http://openradar.appspot.com/23534818







launch-screen