2011-10-29 12 views
8

को एनिमेट करने में मुझे शून्य के दृश्य को एनिमेट करने में समस्या हो रही है। यहाँ मेरी कोड है:शून्य UIView स्केल को शून्य

[UIView animateWithDuration:0.3 animations:^{ 
    myView.transform = CGAffineTransformMakeScale(0.0, 0.0); 
} completion:^(BOOL finished){ 

}]; 

किसी कारण के लिए, दृश्य हिस्सों और पुराने टीवी ट्यूब बंद की तरह क्षैतिज निचोड़। यदि मैं इसके बजाय (0.1, 0.1) स्केल करता हूं, तो यह ठीक से स्केल करता है, लेकिन निश्चित रूप से, शून्य तक नहीं।

ऐसा क्यों हो रहा है?

+0

मुझे अभी भी एक ही समस्या है, क्या आपको कोई समाधान मिला? –

उत्तर

4

प्रयास करें:

[UIView animateWithDuration:0.3 animations:^{ 
    myView.frame = CGRectMake(myView.origin.x, myView.origin.y, 0.0, 0.0); 
} completion:^(BOOL finished){ 
}]; 
+0

या centre.x, centre.y केंद्र बिंदु – jrturton

+2

पर गायब होने के लिए धन्यवाद, लेकिन यदि संभव हो तो मैं वास्तव में परिवर्तन का उपयोग करना चाहता हूं। दृश्य सामग्री पदानुक्रम काफी जटिल है और इसे ठीक से आकार बदलने के लिए प्रत्येक उप-दृश्यों की ऑटोरेसाइजिंग मास्क प्रॉपर्टी से गुजरना होगा। – pixelfreak

+0

यदि आप एंकर पॉइंट – mhillsman

2

का उपयोग करें:

myView.layer.transform = CGAffineTransformMakeScale(0.0, 0.0); 
+2

संशोधित करते हैं तो यह काम नहीं करता है, मुझे लगता है कि आपका मतलब 'myView.transform' था। – Webdevotion

+0

स्केल ट्रांसफॉर्म के लिए (0.0, 0.0) को एनिमेट नहीं किया जा सकता है –

7

कोई अभी भी रुचि है, तो यहाँ है कि मैं क्या (स्विफ्ट में) यह काम (लगभग) बनाने के लिए किया था है:

UIView.animateWithDuration(1, animations: { 
    myView.transform = CGAffineTransformMakeScale(0.01, 0.01) 
}, completion: nil) 

यदि अवधि कम है, तो आप यह नहीं देखते हैं कि यह बिल्कुल 0 तक स्केल नहीं होता है और यह प्रभावी ढंग से फीका होता है।

1

यदि किसी को अभी भी यह समस्या हो रही है, तो समस्या एफ़िन ट्रांसफॉर्म मैट्रिक्स के साथ शून्य के पैमाने के कारक के लिए अनूठी नहीं है - प्रारंभिक मैट्रिक्स और शून्य के बीच "ठीक से" इंटरपोल करने का कोई तरीका नहीं है मैट्रिक्स, इसलिए आपको वर्णित अजीब प्रभाव मिलते हैं।

समाधान केवल एक छोटा लेकिन nonzero पैमाने मान का उपयोग करने के लिए है, उदाहरण के लिए

[UIView animateWithDuration:0.3 
       animations:^{ myView.transform = CGAffineTransformMakeScale(0.01, 0.01); } 
       completion:nil]; 
संबंधित मुद्दे