2012-05-15 6 views
5

मैं एक दृश्य को ध्वस्त करने के लिए एक एनीमेशन बनाने की कोशिश कर रहा हूं जिसमें कुछ सबव्यू शामिल हैं।आईओएस दृश्यों को एनिमेट कर रहा है जिसमें सबव्यू

[UIView beginAnimations:@"advancedAnimations" context:nil]; 
[UIView setAnimationDuration:3.0]; 

CGRect aFrame = aView.frame; 
aView.size.height = 0; 
aView.frame = aFrame; 

[UIView commitAnimations]; 

इस एनिमेशन बढ़िया चल रहा है, लेकिन केवल aView के लिए किया जाता है। अपेक्षित के रूप में सबव्यूज़ नहीं गिरते हैं। मैं सबव्यूज़ को कैसे ध्वस्त कर सकता हूं? इसके अलावा, क्या गिरने के बाद मूल आकार को फिर से समझने का कोई तरीका है?

THX

उत्तर

5

आप शायद अपने subviews के लिए कुछ autoresizing मुखौटा लागू करने के लिए भूल गए हैं। यदि आप

for (UIView *subview in aView.subviews) { 
    subview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin); 
} 

यह काम करना चाहिए।

लेकिन, व्यक्तिगत रूप से मैं का प्रयोग करेंगे, के रूप में Lamelas कहा

aView.transform = CGAffineTransformMakeScale(1.0,0.0); 
+0

अभी भी अच्छा है, लेकिन जिस चीज को मैं करना चाहता हूं वह दृश्य को पतन करना है, इसकी सामग्री को छिपाना क्योंकि यह छोटा हो जाता है। CGAffineTransformMakeScale पूरी सामग्री को स्केल करता है। बीटीडब्ल्यू, आप परिवर्तनों में 0.0 का उपयोग नहीं कर सकते हैं। – toppless

+0

आपने देखा कि हम परिवर्तनों में 0.0 का उपयोग नहीं कर सकते हैं? वैसे भी, मुझे यकीन नहीं है कि आपका प्रश्न क्या है ... क्या आप चाहते हैं कि आपके सबव्यूज़ स्केल करें, या आप एनीमेशन के रूप में उन्हें फसल करना चाहते हैं? – Zoleas

+0

इसे 0.0 पर सेट करने का प्रयास करें और देखें कि एनीमेशन कैसा दिखता है और 0.001 पर सेट करने के लिए इसकी तुलना करें। मैं सबव्यूज़ का आकार बदलने का प्रयास नहीं कर रहा हूं, लेकिन "स्लाइड दरवाजा" प्रभाव रखने के लिए, क्योंकि मुख्य दृश्य छोटा हो जाता है। – toppless

4

इस चेतन करने के लिए उपयोग करने का प्रयास:

aView.transform = CGAffineTransformMakeScale(1.0,0.0); 
+0

+1 कि ओह इतना बेहतर होता है। – Caleb

+0

बेहतर काम करता है, लेकिन एनीमेशन थोड़ा अजीब है - मध्य बिंदु में दृश्य को "निचोड़" करने का प्रयास करता है। – toppless

0

एक शिक्षित अनुमान:

[UIView beginAnimations:@"advancedAnimations" context:nil]; 
[UIView setAnimationDuration:3.0]; 

CGRect aFrame = aView.frame; 
aView.size.height = 0; 
aView.frame = aFrame; 

for (UIView *subview in aView.subviews) { 
    CGRect frame = subview.frame; 
    frame.size.height = 0; 
    subview.frame = frame; 
} 

[UIView commitAnimations]; 

इसके अलावा, गिर के बाद मूल आकार पुनर्गणना के लिए एक तरीका है?

आप शायद गिरने से पहले ऊंचाई को केवल सहेजना चाहते हैं।

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