इस प्रश्न के उद्देश्य को स्पष्ट करने के लिए: मुझे पता है कि दोनों साक्षात्कारों और ड्रॉअर का उपयोग करके जटिल विचार कैसे बनाएं। मैं कब और क्यों एक दूसरे पर एक का उपयोग करने के लिए पूरी तरह से समझने की कोशिश कर रहा हूँ।
मैं यह भी समझता हूं कि समय से पहले इसे अनुकूलित करने का कोई मतलब नहीं है, और किसी भी रूपरेखा को करने से पहले कुछ और अधिक कठिन तरीके से करें। विचार करें कि मैं दोनों तरीकों से सहज हूं, और अब वास्तव में एक गहरी समझ चाहता हूं।
मेरी बहुत सी उलझन यह है कि टेबल व्यू स्क्रॉल के प्रदर्शन को वास्तव में सुचारू और तेज बनाने के तरीके सीखने से आता है। बेशक इस विधि का मूल स्रोत iPhone के लिए ट्विटर के पीछे लेखक (पूर्व में कलरव) से है। मूल रूप से यह कहता है कि टेबल स्क्रॉलिंग बटर को सुचारू बनाने के लिए, रहस्य सबव्यू का उपयोग नहीं करना है, लेकिन इसके बजाय सभी ड्राइंग को एक कस्टम uiview में करें। अनिवार्य रूप से ऐसा लगता है कि बहुत सारे साक्षात्कारों का उपयोग करने के लिए यह धीमा पड़ जाता है क्योंकि उनके पास बहुत सारे ओवरहेड हैं, और उनके अभिभावकों के विचारों पर लगातार रचना की जाती है।
निष्पक्ष होने के लिए, यह तब लिखा गया था जब 3GS काफी नया ब्रांड था, और iDevices ने तब से बहुत तेजी से प्राप्त किया है। फिर भी इस पद्धति है नियमित रूप से सुझाव पर interwebs और कहीं और उच्च प्रदर्शन तालिकाओं के लिए। वास्तव में यह Apple के टेबल सैंपल कोड में एक सुझाई गई विधि है , कई WWDC वीडियो ( iOS डेवलपर्स के लिए व्यावहारिक ड्राइंग ) और कई iOS प्रोग्रामिंग पुस्तकों में सुझाया गया है ।
यहां तक कि कर रहे हैं भयानक लग रही उपकरण ग्राफिक्स डिजाइन और उनके लिए कोर ग्राफिक्स कोड उत्पन्न करने के लिए।
तो सबसे पहले मैं विश्वास करने के लिए नेतृत्व कर रहा हूं "कोर ग्राफिक्स मौजूद है एक कारण है। यह तेज़ है!"
लेकिन जैसे ही मुझे लगता है कि मुझे यह विचार "अनुकूल कोर ग्राफिक्स जब संभव हो" मिलता है, तो मैं यह देखना शुरू कर देता हूं कि ड्राअरेक्ट अक्सर एक ऐप में खराब जवाबदेही के लिए जिम्मेदार होता है, बहुत महंगा मेमोरी वार है, और वास्तव में सीपीयू पर कर लगाता है। मूल रूप से, कि मुझे " ओवरराइडिंग ड्रॉअर से बचना चाहिए" (WWDC 2012 iOS ऐप का प्रदर्शन: ग्राफिक्स और एनिमेशन )
तो मुझे लगता है, सब कुछ की तरह, यह जटिल है। हो सकता है कि आप अपने आप को और दूसरों को यह समझने में मदद कर सकें कि ड्रॉ का उपयोग कब और क्यों करना है?
मैं कोर ग्राफिक्स का उपयोग करने के लिए कुछ स्पष्ट स्थितियों को देखता हूं:
- आपके पास डायनामिक डेटा (Apple का स्टॉक चार्ट उदाहरण) है
- आपके पास एक लचीला UI तत्व है जिसे एक साधारण आकार बदलने योग्य छवि के साथ निष्पादित नहीं किया जा सकता है
- आप एक गतिशील ग्राफ़िक बना रहे हैं, कि एक बार प्रदान किया गया कई स्थानों पर उपयोग किया जाता है
मैं कोर ग्राफिक्स से बचने के लिए स्थितियों को देखता हूं:
- आपके विचार के गुणों को अलग से एनिमेटेड करने की आवश्यकता है
- आपके पास अपेक्षाकृत छोटा दृश्य पदानुक्रम है, इसलिए CG का उपयोग करने वाला कोई भी अतिरिक्त प्रयास लाभ के लायक नहीं है
- आप पूरी चीज़ को फिर से देखे बिना दृश्य के टुकड़ों को अपडेट करना चाहते हैं
- जब माता-पिता के दृश्य का आकार बदलता है, तो आपके साक्षात्कार के लेआउट को अपडेट करना होगा
इसलिए अपने ज्ञान को सर्वश्रेष्ठ बनाएं। आप किन परिस्थितियों में ड्रॉअर / कोर ग्राफ़िक्स के लिए पहुँचते हैं (जो कि सबव्यू के साथ भी पूरा किया जा सकता है)? कौन से कारक आपको उस निर्णय की ओर ले जाते हैं? हनी चिकनी टेबल सेल स्क्रॉलिंग के लिए अनुशंसित एक कस्टम दृश्य में कैसे / क्यों आरेखण किया जाता है, फिर भी Apple सामान्य रूप से प्रदर्शन कारणों के खिलाफ ड्रॉ की सलाह देता है? सरल पृष्ठभूमि छवियों के बारे में क्या है (जब आप उन्हें सीजी बनाम एक आकार देने वाली png छवि का उपयोग करके बनाते हैं)?
इस विषय की गहरी समझ के लिए सार्थक ऐप्स बनाने की आवश्यकता नहीं हो सकती है, लेकिन मुझे यह समझाने में सक्षम हुए बिना तकनीकों के बीच चयन करना पसंद नहीं है। मेरा दिमाग मुझ पर पागल हो जाता है।
प्रश्न अद्यतन
सभी की जानकारी के लिए धन्यवाद। यहाँ कुछ स्पष्ट प्रश्न:
- यदि आप कोर ग्राफिक्स के साथ कुछ आकर्षित कर रहे हैं, लेकिन UIImageViews और पहले से रेंडर किए गए png के साथ एक ही बात को पूरा कर सकते हैं, तो क्या आपको हमेशा उस मार्ग पर जाना चाहिए?
- एक समान प्रश्न: विशेष रूप से इस तरह के बदमाश उपकरण के साथ , जब आपको कोर ग्राफिक्स में इंटरफ़ेस तत्वों पर विचार करना चाहिए? (संभवतया जब आपके तत्व का प्रदर्शन परिवर्तनशील हो। उदाहरण के लिए 20 अलग-अलग रंगों में भिन्नता वाला एक बटन। कोई अन्य मामले?)
- नीचे दिए गए मेरे उत्तर में मेरी समझ को देखते हुए, टेबल सेल के लिए समान प्रदर्शन लाभ संभवतः आपके सेल के एक स्नैपशॉट बिटमैप को प्रभावी रूप से प्राप्त करने के बाद प्राप्त किया जा सकता है, जब आपके कॉम्प्लेक्स UIView ने खुद को प्रस्तुत किया, और अपने जटिल दृश्य को स्क्रॉल और छुपाते हुए प्रदर्शित किया? जाहिर है कुछ टुकड़ों पर काम करना होगा। बस एक दिलचस्प विचार मेरे पास था।