सबसे पहले, आइए बिना एनीमेशन के मामले पर चर्चा करें। आपका खिड़की एक दृश्य पदानुक्रम, अपने rootViewController
दृश्य से शुरू हो गया है
- :
present
कॉल करने से पहले।
present:
- कॉल करने के बाद दृश्य पदानुक्रम अभी भी बदलाव के बिना मौजूद है।
- "डमींग व्यू" नामक एक विशेष पूर्ण-स्क्रीन दृश्य विंडो में जोड़ा गया है (यानी,
rootViewController
के दृश्य के अंदर नहीं है, लेकिन विंडो के अंदर (विंडो UIView
भी है)। यह दृश्य पारदर्शी है, मंद हो जाता है पेश controler और ब्लॉक उपयोगकर्ता बातचीत।
- प्रस्तुत (मोडल) नियंत्रक के दृश्य तो खिड़की के भी जोड़ा जाता है।
कुछ अन्य विचारों खिड़की और प्रस्तुत नियंत्रक की खिड़की के बीच में जोड़ी गई है। आप लॉग इन करते हैं आपका दृश्य पदानुक्रम, आपको _ControllerWrapperView
या कुछ समान नाम वाले वर्ग दिखाई देंगे। हालांकि, यह आईओएस संस्करणों के बीच बदल गया है और आपको दृश्य पर भरोसा नहीं करना चाहिए संरचना। ध्यान दें कि मोडल नियंत्रक कभी पारदर्शी नहीं हो सकता है क्योंकि यह विंडो का प्रत्यक्ष सबव्यू नहीं है और नियंत्रक और खिड़की के बीच रैपर पारदर्शी नहीं हैं।
एनिमेटेड केस लगभग समान है। केवल चरणों के बीच कुछ फैंसी एनिमेशन हैं।
संपादित करें 2: उत्तर वास्तव में थोड़ा गलत था। आईफोन और आईपैड प्रस्तुत नियंत्रकों के बीच एक बड़ा अंतर है।
आईफोन पर, प्रस्तुत नियंत्रक हमेशा पूर्ण स्क्रीन प्रदर्शित होते हैं और प्रस्तुत करने वाले नियंत्रक वास्तव में खिड़की से हटा दिए जाते हैं।
आईपैड पर, यदि प्रस्तुत नियंत्रक पूर्णस्क्रीन नहीं है (UIModalPresentationStyle
देखें), प्रस्तुत नियंत्रक विंडो में रहता है।
आपका प्रश्न:
मतलब जब तक मोडल विंडो (उपरोक्त मामले में self.view) देखें पदानुक्रम और उपरोक्त मामले में presentedViewController.view (myVC.view से निकाल दिया जाता presentingViewController.view ऊपर है) UIWindow पर जोड़ा गया है?
यदि नियंत्रक पूर्ण स्क्रीन है, तो यह दावा सत्य है। अन्यथा, प्रस्तुत करने वाला दृश्य नियंत्रक वहां रहता है लेकिन पूरी सामग्री अन्य विचारों से ओवरलैप होती है (भले ही वे अर्ध-पारदर्शी हों)। साथ ही, प्रस्तुत और प्रस्तुत नियंत्रक विचारों के बीच हमेशा कुछ विचार होते हैं।
यदि myVC.modalPresentationStyle! = UIModalPresentationFullScreen यदि मामला क्या होगा?
पिछले प्रश्न का उत्तर देखें - आईफोन पर, कोई फर्क नहीं पड़ता।
क्या आईओएसआईविंडो से सभी दृश्यों को भी हटाया जाता है, सिवाय बिना दृश्य स्क्रीन नियंत्रक। पूर्ण स्क्रीन मोडल संवाद अनुकूलन के लिए ऊपर है? यदि नहीं तो क्यों नहीं?
मेरे परीक्षणों से, केवल प्रस्तुत करने वाले नियंत्रक को विंडो पदानुक्रम से हटा दिया जाता है। यह शायद ड्राइंग प्रदर्शन अनुकूलित करने के लिए है। यह एकमात्र नियंत्रक है जो सिस्टम सुरक्षित रूप से हटा सकता है। किसी भी अन्य दृश्य को हटाने से समस्याएं हो सकती हैं (उदा। विचार जो हमेशा दिखाई देना चाहिए)।
संपादित करें: आप एक पारदर्शी नियंत्रक बनाना चाहते हैं, तो आप कर सकते हैं:
- दृश्य सीधे आपके विचार पदानुक्रम (या तो नियंत्रक के दृश्य करने के लिए या खिड़की करने के लिए) के लिए एक संक्रमण एनीमेशन के साथ जोड़े (
+[UIView transition...]
)
- वही है लेकिन आपके नियंत्रक को बाल नियंत्रक भी जोड़ रहा है।
'clippingVC' क्या है? – rptwsthi