मुझे एक ही समस्या है।
मेरे पास लैंडस्केप ओरिएंटेशन (बाएं और दाएं परिदृश्य दोनों) में काम करने वाला एक गेम है।
एक बहु-दृश्य अनुप्रयोग को प्रबंधित करने के लिए मैं एक रूट UIviewController का उपयोग करता हूं, यानी एक डमी UIViewcontroller एक UIview के साथ जो कुछ भी नहीं करता है। इसके बाद मैं सबव्यूव के रूप में इसे अन्य सभी यूआईवीव्यू जोड़ता हूं।
ऐप शुरू करते समय, एमुलेटर जल्दी से पोर्ट्रेट अभिविन्यास पर घूमता है, और मुझे अपने फ्रेम में से प्रत्येक दृश्य (0, -80,320,480) जैसा लगता है। इसके परिणामस्वरूप दाईं तरफ 160 x 320 आयत से देखा जा रहा है।
मैंने देखा है कि - चाहिएऑटोरोटेट टॉइंटरफेसऑरिएंटेशन: प्रत्येक सबव्यू का तरीका केवल एक बार बुलाया जाता है, और यह तब होता है जब इसे रूट व्यू में जोड़ा जाता है। बाद में, डिवाइस को घूर्णन करते समय, केवल रूट व्यू को इसकी विधि कहा जाता है।
अनजाने में, किसी भी - विलुप्त * विधियों की कॉल केवल रूट व्यू पर भेजी जाती है, इसलिए, उपविभागों में से किसी भी विधि को परिभाषित करना व्यर्थ है।
इन विधियों को हर बार कहा जाता है कि अभिविन्यास को अभिविन्यास में बदल दिया गया है - चाहिएऑटोरोटेट टॉइंटरफेसऑरिएंटेशन: विधि। इसलिए मैंने सोचा कि मैं वहां से अपने सबव्यूज़ की फ्रेम संपत्ति को छोटा कर सकता हूं।
इसे पूरा करने के मैं अपने rootViewController कक्षा में निम्न विधि परिभाषित:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
subview1_ViewController.view.frame = CGRectMake(0,0,480,320);
subview2_ViewController.view.frame = CGRectMake(0,0,480,320);
...
}
मुझे समझ नहीं आता क्यों फ्रेम संपत्ति अपडेट नहीं किया गया है, लेकिन मैं इस समाधान का काम करता है।
उम्मीद है कि यह मदद करता है ....
अच्छा सवाल, मुझे दिनों से मेरे दिमाग में यह संदेह था। इसी तरह के सवाल पूछने वाला था और इस पर टक्कर लगी! –
मुझे अपने प्रश्न पूछना चाहिए जैसा आपने किया था। ये सार्वभौमिक से संबंधित सभी प्रश्न हैं, "कस्टम ढांचा, दस्तावेज़ीकरण पढ़ें, ठीक है अब मुझे कैसे पता होना चाहिए कि यह सब कैसे काम करना चाहिए"। –