निम्न स्निपेट कुंजी-फ़्रेमयुक्त एनीमेशन का उपयोग करके नामक दृश्य को घुमाता है। एनीमेशन में 1 फ्रेम से अधिक 3 फ्रेम फैले हुए हैं, दृश्य क्रमशः पहले, दूसरे और अंतिम फ्रेम में 0º, 180º और 360º तक घूमते हैं। कोड निम्नानुसार है:
CALayer* layer = someView.layer;
CAKeyframeAnimation* animation;
animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.duration = 1.0;
animation.cumulative = YES;
animation.repeatCount = 1;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0 * M_PI],
[NSNumber numberWithFloat:0.5 * M_PI],
[NSNumber numberWithFloat:1.0 * M_PI], nil];
animation.keyTimes = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.5],
[NSNumber numberWithFloat:1.0], nil];
animation.timingFunctions = [NSArray arrayWithObjects:
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear], nil];
[layer addAnimation:animation forKey:@"transform.rotation.z"];
यदि आप प्रतिद्वंद्वी एनीमेशन के बाद हैं, तो आपको नकारात्मक मानों का उपयोग करना चाहिए। थोड़ी अधिक बुनियादी एनीमेशन के लिए, आप CABasicAnimation का उपयोग कर सकते हैं:
CALayer* layer = someView.layer;
CABasicAnimation* animation;
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0 * M_PI];
animation.toValue = [NSNumber numberWithFloat:1.0 * M_PI];
animation.duration = 1.0;
animation.cumulative = YES;
animation.repeatCount = 1;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
[layer addAnimation:rotationAnimation forKey:@"transform.rotation.z"];
स्रोत
2009-07-19 13:47:54
क्या मुझे कुछ विशेष शामिल करना है? Xcode सभी केसीए चीजों के बारे में शिकायत करता है जैसे kCAMediaTimingFunctionLinear। वे अज्ञात हैं। – Thanks
".objc_class_name_CAKeyframeAnimation", से संदर्भित: शाब्दिक-सूचक @__ ObjC @__ में TestClass.o ld cls_refs @ CAKeyframeAnimation: प्रतीक (रों) नहीं मिला collect2: ld 1 से बाहर निकलें स्थिति – Thanks
लौटे जब भी आप कुछ नहीं किया जा रहा के साथ समस्या है पाया गया, आपको यह देखने के लिए प्रलेखन में खोजना चाहिए कि यह कहां परिभाषित किया गया है। इस मामले में, उन स्थिरांकों को CAMediaTiming और CAMediaTimingFunction में परिभाषित किया गया है जो क्वार्ट्जकोर फ्रेमवर्क का हिस्सा हैं। यदि आपने क्वार्ट्जकोर.फ्रेमवर्क नहीं जोड़ा है, तो शायद यह आपकी समस्या है। –