2012-08-24 21 views
15

मैं एक CALayer मैं मेरे विचार में शामिल किया है है: जब मैं MyView के फ्रेम बदलने के बाद CALayer के फ्रेम बदलने का प्रयासकैलियर फ्रेम परिवर्तन के साथ एनिमेट करता है?

myView.myCALayer = [[CALayer alloc] init]; 
CGSize size = myView.frame.size; 
myView.myCALayer.frame = CGRectMake(0, 0, size.width, size.height); 
myView.myCALayer.backgroundColor = [[UIColor blackColor] CGColor]; 
[myView.layer addSublayer:myView.myCALayer]; 

, CALayer का आकार बदलने एनिमेट। मैंने कैलियर को कोई एनीमेशन नहीं जोड़ा है, इसलिए मुझे यह समझ में नहीं आया। मैंने आकार बदलने से पहले परत पर हटाए गए सभी एनीमेशन को भी कॉल करने का प्रयास किया है और यह अभी भी आकार बदलने को एनिमेट करता है।

कोई भी जानता है कि यहां क्या हो सकता है?

उत्तर

34

वास्तव में एक कैलियर के लिए कुछ मूल्य निर्धारित करने पर एक निहित एनीमेशन है। एक नया फ्रेम सेट करने से पहले आपको एनिमेशन को अक्षम करना होगा।

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 

[myView.myCALayer.frame = (CGRect){ { 10, 10 }, { 100, 100 } ]; 

[CATransaction commit]; 

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW3

+14

Scotts सही है, लेकिन दूसरी पंक्ति आप उपयोग कर सकते हैं करने के लिए वैकल्पिक [CATransaction setDisableActions: हाँ] कुंजी-मान संस्करण के लिए के रूप में कम हाथ। इसके अलावा, कोर एनीमेशन गाइड में "एनिमेटेबल प्रॉपर्टीज" देखें। यह विशेष रूप से उल्लेख करता है कि कौन से एनिमेटेबल गुण डिफ़ॉल्ट रूप से सरल मूल्य परिवर्तनों पर एक अंतर्निहित एनीमेशन का उपयोग करते हैं। http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimProps.html – Bobjt

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