2013-10-21 6 views
5

मैंने एक कंटेनर व्यू बनाया है जिसमें बाल दृश्यों का एक गुच्छा है - एक संग्रह दृश्य, एक कस्टम टूलबार और कुछ बिट्स और टुकड़े।सबव्यूज़ पर drawRect?

डिज़ाइन की शीर्ष, बाएं और दाएं किनारे पर एक सीमा है, लेकिन नीचे नहीं, इसलिए मैंने सीमा को शामिल करने के लिए drawRect को ओवरराइड किया है।

जब मैंने टूलबार जोड़ा तो मैंने देखा कि यह सीमा के शीर्ष पर दिखाई देता है। (किसी कारण से मैंने शुरू में सोचा था कि यह निश्चित रूप से नहीं करेगा!)।

क्या वैसे भी मैं अपने सबव्यू के शीर्ष पर आकर्षित करने के लिए drawRect बता सकता हूं?

बेशक वहाँ मेरी समस्या (उदाहरण के लिए उपकरण पट्टी के फ्रेम को समायोजित) लेकिन मैं क्रम संयोजन और देखने के संबंध में कैसे ड्राइंग काम करता है की एक गहरी समझ प्राप्त करने के लिए इस सवाल का पूछ रहा हूँ हल करने के लिए अन्य तरीकों का भार है पदानुक्रम।

+0

'zIndex' – onmyway133

उत्तर

5

चित्रण UIView के सभी सबव्यू के नीचे होता है। इसे बहुत आधार पर सोचें - आपके विचार का एक वास्तविक हिस्सा - और फिर प्रत्येक दृश्य को आपके दृश्य के शीर्ष पर जोड़ा जाता है। सबव्यू के ऊपर चित्र बनाने के लिए सबव्यूज़ दृश्य के अंतर्गत दिखने के लिए वही है, जबकि अभी भी सबव्यूव्स हैं। शायद यह समानता स्पष्ट करता है कि यह हमेशा नीचे क्यों होना चाहिए। और यह आपको समाधान के लिए तार्किक रूप से भी ले जाता है:

उपरोक्त उपरोक्त दिखाई देने के लिए चित्र प्राप्त करने के लिए, बस ड्राइंग कोड को अंदर रखने के लिए एक नया UIView सबक्लास बनाएं, और इसे अन्य सभी सबव्यू के ऊपर रखें।

यह सुनिश्चित करने के लिए कि आपका सबव्यूव हमेशा शीर्ष पर रहता है, अपने UIView के addSubview: कार्यान्वयन को ओवरराइड करना भी एक अच्छा विचार हो सकता है।

+0

धन्यवाद का उपयोग करने पर विचार करें। पीछे की ओर में पागल सवाल। बेशक ड्राइंग दृश्य पदानुक्रम का पालन करना चाहिए। यह और क्या कर सकता है? –

2

मुझे विश्वास है कि आप नहीं कर सकते हैं, क्योंकि drawRect को देखने के लिए पहले कहा जाता है और जब इसे ड्रॉरेक्ट ड्राइंग समाप्त हो जाता है तो इसे आकर्षित करने के लिए उप-दृश्यों के लिए बुलाया जाता है। हो सकता है कि उस दृश्य के शीर्ष पर बस एक और सबव्यूव बनाएं जिसके पास आपको आवश्यक सीमाएं हैं और हर जगह पारदर्शी है?

2

सबव्यू drawn on top of their super views हैं। तो आपके प्रश्न का उत्तर नहीं है।

उस समय जब आप अपने कंटेनर व्यू पर सीमा खींचते हैं, कोको ने अभी तक टूलबार ड्राइंग शुरू नहीं किया है।

मुझे लगता है कि आप सीमा के शीर्ष को एक सबव्यूव बना सकते हैं या टूलबार को थोड़ा सा नीचे ले जा सकते हैं।

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