2012-08-23 12 views
5

के लिए COMBINE_HIDPI_IMAGES और रेटिना ग्राफिक्स हमारे पास एक एक्सकोड प्रोजेक्ट है जिसमें एनआईबी-आधारित यूआई और वेबव्यू यूआई दोनों के लिए रेटिना ग्राफिक्स दोनों शामिल हैं। यह प्रोजेक्ट मैक के लिए एक ऐप बनाता है।वेबब्यू

परियोजना इन ग्राफिक्स को अंतिम ऐप में स्थानांतरित करने के लिए दो अलग-अलग बिल्ड चरणों का उपयोग करती है। पहला पारंपरिक कॉपी बंडल संसाधन है जो एप्लिकेशन पैकेज में 1x और 2x ग्राफिक्स दोनों प्राप्त करता है। दूसरा एक कॉपी फाइल बिल्ड चरण है जो वेब ग्राफिक्स को "ग्राफिक्स" उपपथ के साथ एक अलग संसाधन गंतव्य में कॉपी करता है।

(यह कुछ नामकरण संघर्ष से बचा जाता है और वेब डिजाइनर एक परिचित "ग्राफिक्स/whatever.png" पथ का उपयोग करने देता है।)

जब इस परियोजना के निर्माण के लिए, हम एक निर्भरता विश्लेषण त्रुटि मिलेगा जिसमें बताया गया:

मल्टी-प्रस्तुति छवि 'जो भी @2x.png' को द्वारा संसाधित नहीं किया जा सकता है फ़ाइलें कॉपी चरण - कॉपी संसाधन निर्माण चरण को आजमाएं, या COMBINE_HIDPI_IMAGES अक्षम करें।

यह आसान स्थापना तैनाती बिल्ड "कम्बाइन उच्च रिज़ॉल्यूशन कलाकृति" कहा जाता है बंद करने के लिए काफी है, लेकिन इस निब आधारित यूआई के साथ-साथ WebView यूआई में लोगों में प्रयोग किया जाता ग्राफिक्स प्रभावित करता है। विकल्प चालू होने के साथ, button.png और [email protected] एप्लिकेशन पैकेज के संसाधन फ़ोल्डर में button.tiff में संयुक्त हो जाएं। इसके बिना, मूल नामों का उपयोग किया जाता है।

जहां तक ​​मैं कह सकता हूं, एप्लिकेशन सामान्य रूप से व्यवहार करता है, लेकिन चूंकि COMBINE_HIDPI_IMAGES डिफ़ॉल्ट रूप से सेट किया गया है, मुझे संदेह है कि ग्राफिक्स को एक फ़ाइल के रूप में तैनात करने के लिए कुछ लाभ है (लोड करने के लिए तेज़ और कैश, शायद।)

आदर्श रूप से, मैं कॉपी फ़ाइलें निर्माण चरण के दौरान केवल COMBINE_HIDPI_IMAGES को अक्षम करना चाहता हूं। मैं बाहर यह करने के लिए एक तरह से

अद्यतन 8/27/2012

समझ नहीं सकता, उम्मीद है कि किसी और यहाँ कर सकते हैं ... इस विशेष आवेदन के लिए, इस समस्या को ठीक करने के लिए सबसे आसान तरीका करने के लिए था 2x संस्करण के साथ सभी HTML छवियों को प्रतिस्थापित करें। चूंकि टैग चौड़ाई और ऊंचाई निर्दिष्ट करते हैं, इसलिए छवियों को गैर-रेटिना डिवाइस पर 50% तक घटाया जाता है। गुणवत्ता ठीक है और चूंकि उन्हें स्थानीय फाइल सिस्टम से लोड किया जा रहा है, इसलिए वहां पर प्रभावशाली प्रदर्शन प्रभाव नहीं है।

अद्यतन 8/28/2012

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

उत्तर

0

एकमात्र तरीका यह है कि मैं ऐसा करने के लिए सोच सकता हूं कि यह एक हैक है, लेकिन किसी और ने उत्तर नहीं दिया है क्योंकि यह आपके लिए काम करना चाहिए।

मेरा सुझाव है कि आप अपने लक्ष्य (target.xcconfig) पर एक xcconfig फ़ाइल का उपयोग अपनी सेटिंग्स को निर्दिष्ट करने के लिए करें, फिर उस चरण के पहले/बाद में स्क्रिप्ट बनाएं जो मौजूदा xcconfig को दो संस्करणों में से एक के साथ बदल दें (लक्ष्य-ऑन .xcconfig, target-off.xcconfig)। यह काम करना चाहिए, हालांकि Xcode बाद में xcconfig फ़ाइल को अद्यतन नहीं कर सकता है (मैं इस समय जांचने की स्थिति में नहीं हूं), आपको जांच करनी होगी।

विवरणों को जानने के लिए मैं इसे आपके पास छोड़ दूंगा।इस दृष्टिकोण के बारे में अधिक जानकारी (कम हैकिश भिन्नता), और इसे कैसे सेट अप करें, मेरे blog पर पाया जा सकता है।

+0

यदि यह काम नहीं करता है और आप _xcodebuild_ से बना रहे हैं तो आप यह निर्दिष्ट करने के लिए '-xcconfig' पैरामीटर का उपयोग कर सकते हैं कि आप कौन सा संस्करण चाहते हैं। – Andrew