संदर्भ: मैं एक सामान्य UIViewController.view
से UISplitViewController.view
पर कस्टम एनीमेशन करने की कोशिश कर रहा हूं। एनीमेशन बाएं से दाएं से दिखाना चाहिए।आईओएस: rootViewController पर गलत ओरिएंटेशन एनिमेटिंग?
मैंने self.window.rootViewController = viewController
सेट किया है जहां viewController
एक सामान्य UIViewController
है।
एक बार जब उपयोगकर्ता कड़ी चोट, निम्नलिखित बुलाया जाता है:
UIView *theWindow = [viewController.view superview];
[viewController.view removeFromSuperview];
[theWindow addSubview:self.splitViewController.view];
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
जब डिवाइस एक चित्र मोड में है, पूरी तरह से सब कुछ चला गया। हालांकि, जब डिवाइस लैंडस्केप मोड में होता है, तो संक्रमण एनीमेशन ऐसा करता है जैसे डिवाइस अभी भी पोर्ट्रेट मोड में है। उदाहरण के लिए: बाईं ओर से आने के बजाय, यह नीचे से आता है। दोनों विचारों का अभिविन्यास पूरी तरह से सही है। केवल संक्रमण अजीब है।
आप दूसरी दिशा में परिदृश्य को बारी बारी से हैं, एनीमेशन ऊपर से होती है? या यह नीचे से है कि आप किस तरह से परिदृश्य मोड में जाते हैं? स्थिरता परत के बाईं ओर से एनीमेशन लाता है। मुझे आश्चर्य है कि परत का फ्रेम अपडेट नहीं किया गया है, तो घूर्णन के बाद परत की बाईं तरफ अब नीचे क्या था। – jmstone617
यह सही है। एनीमेशन किसी भी अभिविन्यास परिवर्तन को अनदेखा करता है। यह सुनिश्चित करने के लिए कि परत को अपडेट किया जाए, इस पर कोई सुझाव? – Byte
मुझे एक ही समस्या है - कैलियर का अभिविन्यास सिर्फ इसके विचार से मेल नहीं खाता है। इसके बारे में कुछ अन्य समान पद प्रतीत होते हैं, लेकिन मेरे लिए कोई भी समाधान काम नहीं करता है। 90 डिग्री के स्तर से परत को घूर्णन करने से भी दृश्य घूमता है, जिससे यह मदद नहीं करता .. – jonydep