2012-09-21 16 views
5

मेरे पास लगभग 5-सितारा रेटिंग के साथ ऐप स्टोर में एक ऐप है, लेकिन जब आईओएस 6 बाहर आया, तो ऐप के मुख्य दृश्य पदानुक्रम में कुछ विचार झपकी लगने लगे। यह ऐप पर होता है जो स्टोर में था (जब आईओएस 6 बाहर आया तो मैंने इसे हटा दिया) साथ ही साथ सिम्युलेटर में भी।आईओएस 6 देखें पदानुक्रम दुःस्वप्न

मैंने एक्सकोड में इसे डीबग करने के लिए लगभग 100 घंटे की कोशिश की, लगभग 14 घंटे बिताए हैं, लेकिन इस पर कोई कर्षण नहीं मिल सकता है। सबव्यूव गायब हो जाते हैं और फिर से दिखाई देते हैं जैसे एक gremlin यादृच्छिक रूप से दिखाई देने वाली संपत्ति को बंद कर देता है और उनमें से प्रत्येक के लिए प्रति सेकंड 10 गुना तक, लंबी अवधि के बीच जहां सबकुछ सामान्य होता है।

मुख्य इंटरफ़ेस एक डायल है जिसे उपयोगकर्ता घूम सकता है, जहां मैं इसे घुमाने के लिए परत पर 3 डी ट्रांसफॉर्म का उपयोग करता हूं। मुझे मिला एकमात्र पैटर्न यह है कि 4 गायब उपन्यासों में से 3 एक साथ गायब हो जाते हैं, जैसे कि एक के रूप में बंद कर दिया जाता है, जब डायल कुछ अलग-अलग स्थितियों में घुमाया जाता है।

चौथा गायब सबव्यू एक स्थिर छवि होना चाहिए और यह बिना किसी स्पष्ट पैटर्न के चालू और बंद हो रहा है।

मुझे किसी भी विचार, टिप्स पसंद आएंगे कि मैं इसे कैसे डिबग कर सकता हूं। यह स्मृति चेतावनी नहीं है, और अतिरिक्त [setNeedsToDisplay] निष्पादित करने का कोई प्रभाव नहीं पड़ता है। मुझे लगता है कि ऐप्पल ने आईओएस 6 में कुछ तोड़ दिया है, लेकिन मुझे इन मुद्दों के बारे में कोई और बात नहीं मिल रही है।

  1. मेरे पदानुक्रम 2 आधार CALayers कि ठीक हैं शामिल हैं:


    यहाँ subviews और CALayers की मुख्य दृश्य के पदानुक्रम में खराबी है।

  2. ऊपर एक बहुत बड़ा कस्टम UIView (drawRect का उपयोग करता है) और बड़े UIImageVIew जो एक साथ बंद हो जाते हैं, हमेशा, जब नीचे कुछ स्थितियों पर घूमता है। केवल नीचे वाला घुमाया जा रहा है।
  3. ऊपर एक कस्टम टेक्स्ट ड्राइंग UIView है जो झपकी नहीं देता है।
  4. ऊपर यह एक छोटा लाल पिन ग्राफिक UIImageView है जो पर उपरोक्त 2 दृश्यों के समान सटीक रूप से बंद हो जाता है। यह एक वेनिला UIImageView है; कोई ट्रांसफॉर्म या सबक्लास या कस्टम ड्राइंग कोड नहीं! और अभी तक यह अभी भी एक ही झपकी है।
  5. ऊपर यह एक अदृश्य UIButton है जो हर समय काम करता प्रतीत होता है।
  6. कि ऊपर एक UIImageView कि एक छोटे से ग्राफिक कि लगातार और पर बंद ब्लिंक है, अन्य 3 "से जुड़ा हुआ" परतों के रोटेशन के आधार पर निमिष (मैं जुड़ा हुआ कहते हैं, क्योंकि वे एक साथ सभी गायब हो जाते हैं चाहते) से संबंधित नहीं है ।
+2

क्या आपने 'isHidden',' अल्फा 'के सेटर्स ओवरराइड करके ऑर्डर बदलने के लिए कुछ लॉग संदेश जोड़ने का प्रयास किया था? ऐप्पल ने UIKit में कुछ बदलाव किए, यह सच है, लेकिन इसका मतलब यह नहीं है कि आप समस्या के लिए ज़िम्मेदार नहीं हैं। जैसे कि उन्हें 'यूआईटीचएचएच' पर चेतावनी थी कि 'किसी भी यूआईकिट वर्ग के इंस्टेंस वैरिएबल को निजी माना जाना चाहिए ...' और अनुमान लगाएं कि, आईओएस 6 में वर्र्स सार्वजनिक नहीं हैं। –

+0

मैंने आपके द्वारा सुझाए गए सुझावों को सेट किया है और सेटहाइड के लिए ओवरराइड जोड़ा है: और setAlpha: मेरे UIView सबक्लास पर जिनके पास समस्याएं थीं और प्रत्येक पर ब्रेकपॉइंट सेट करें - वे कभी भी हिट नहीं हुए। हालांकि, UIKit परिवर्तनों के बारे में आपका क्या मतलब है, यह सुनिश्चित नहीं है। – avance

उत्तर

2

पदानुक्रम सुनिश्चित करने के लिए आपको अपनी दृश्य परतों z-property को मैन्युअल रूप से सेट करने का प्रयास करें।

+0

अजीब - मैं दृश्य नियंत्रक के दृश्यडिडलोड विधि में केवल एक बार दृश्य परत सेट अप कर रहा हूं, और वे सही शुरू कर देते हैं। मैं बाद में जेड-पोस्टियन स्पष्टीकरण स्थापित नहीं कर रहा हूं, या परतों को किसी अन्य तरीके से पुनर्व्यवस्थित नहीं कर रहा हूं, इसलिए इसका कोई प्रभाव नहीं होना चाहिए। फिर भी, मैंने अत्यधिक संदेह के साथ आपके सुझाव की कोशिश की, और यह चाल है! बहुत बहुत धन्यवाद! – avance

3

(यह एक जवाब वास्तव में नहीं है, यह चूहा के जवाब के लिए एक जवाब है, लेकिन मैं अभी तक टिप्पणी करने के लिए प्रतिष्ठा अंक नहीं हैं)

हाँ, स्पष्ट रूप से zPositions की स्थापना इसे ठीक कर रहा है, और हाँ यह अजीब है। मैं इस मुद्दे में भी भाग गया और इसके बारे में यहां ब्लॉग किया: iOS 6 Rendering Bug: 3D-Rotation Causes Layers to Render Without Respect for View Hierarchy। ऐसा लगता है कि आईओएस 6 में प्रस्तुत एक प्रतिपादन बग प्रतीत होता है। ब्लॉग में ऐप्पल के साथ दायर की गई बग के ओपन रडार संस्करण का एक लिंक है, साथ ही नमूना प्रोजेक्ट जिसे आप बग और zPosition फिक्स देखने के लिए चला सकते हैं।