2013-02-09 64 views
5

मैं पॉपअप के भीतर नेविगेटिव दृश्यों के आईट्यून्स 11 व्यवहार को पुन: उत्पन्न करने का प्रयास कर रहा हूं। मुझे लगता है कि मेरी एनीमेशन एक ही समय में होने के लिए एक तरीका नहीं दिख रहा है क्योंकि पॉपओवर के contentSize परिवर्तन होता है, हालांकि।एनिमेटिंग ऑटो लेआउट एनएसपीओवर सामग्री के साथ समवर्ती रूप से बदलता है आकार बदलें

मेरे पास मूल सेटअप एक कस्टम व्यू उपclass MyPopoverNavigationView दो सबव्यूज़ के साथ है: पुराने और नए विचार जिन्हें मैं पॉपओवर के बीच नेविगेट करना चाहता हूं। पॉपओवर के contentViewController में MyPopoverNavigationView उदाहरण है view के रूप में। मैं यह कर:

// Configure constraints how I want them to show the new popover view 
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *ctx) { 
    [ctx setDuration:0.25]; 
    [ctx setAllowsImplicitAnimation:YES]; 
    [self layoutSubtreeIfNeeded]; 
} completionHandler:nil]; 

जहां तक ​​मेरा ऑटो लेआउट WWDC 2012 वीडियो से बता सकते हैं, इस बाधा परिवर्तन का एक परिणाम के रूप में देखा गया 'फ्रेम में परिवर्तन चेतन करने के लिए सिफारिश तरीका है। यह काम करता है, लेकिन एनीमेशन दो चरणों में होता है:

  • पहले, पॉपओवर के contentSize, नए दृश्य है कि मैं देखने दिखाई देने लगता है कि इससे पहले कि (में जाने रहा हूँ समायोजित करने के लिए बदल जाएगा तो यह आंशिक रूप से धुंधला कर मौजूदा सामग्री)।
  • दूसरा, विचारों को एनिमेट करने की उम्मीद है, ताकि मैं स्थापित बाधाओं प्रणाली को संतुष्ट कर सकूं।

कुछ breakpoints की स्थापना से, ऐसा लगता है कि अंत में पॉपओवर _fromConstraintsSetWindowFrame: कहा जाता है, जो मेरे एनीमेशन समूह के बाहर पॉपओवर आकार एनीमेशन करता है पर एक निजी प्रणाली को बुलाती है -layoutSubtreeIfNeeded की तरह। मेरे संदर्भ की अवधि का सम्मान नहीं किया जाता है, और मेरे एनिमेशन तब तक नहीं होते जब तक कि पॉपओवर का आकार परिवर्तन पूरा न हो जाए।

पॉपओवर के आकार में बदलाव के साथ मैं एनिमेट करने के लिए अपने विचार कैसे प्राप्त कर सकता हूं?

उत्तर