मैं कई महत्वपूर्ण फ्रेम के साथ एक एनीमेशन बनाना चाहता हूं। मैं अपने लेयर (इस मामले में एक बटन) 1.5 तक स्केल करने के लिए 0.5 से नीचे तो 1.2 तक फिर नीचे 0.8 से 1.0 तक चाहता हूं।आप कैसे CAKeyframe एनीमेशन स्केल करते हैं?
मैं भी प्रत्येक कीफ्रेम के आसानी से और आसानी से करना चाहता हूं।
जैसा कि आप कल्पना कर सकते हैं, यह जगह पर एक स्प्रिंग/बाउंस प्रभाव पैदा करेगा।
मेरे ऐप के अन्य हिस्सों में मैं इस तरह से CAKeyframe एनीमेशन का उपयोग कर रहा हूं (नीचे कोड देखें)। यह एक समान वसंत एनीमेशन बनाता है लेकिन एक्स और वाई स्थिति के लिए।
क्या मैं नीचे दिए गए कोड को स्थिति के बजाय स्केल को प्रभावित करने के लिए अनुकूलित कर सकता हूं?
अग्रिम धन्यवाद!
- (CAAnimation*)monInAnimation {
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,NULL,113,320);
CGPathAddLineToPoint(path, NULL, 113.5, 283);
CGPathAddLineToPoint(path, NULL, 113.5, 179);
CGPathAddLineToPoint(path, NULL, 113.5, 207);
CGPathAddLineToPoint(path, NULL, 113.5, 187);
CGPathAddLineToPoint(path, NULL, 113.5, 199);
CGPathAddLineToPoint(path, NULL, 113.5, 193);
CGPathAddLineToPoint(path, NULL, 113.5, 195);
CGPathAddLineToPoint(path, NULL, 113.5, 194);
CAKeyframeAnimation *
animation = [CAKeyframeAnimation
animationWithKeyPath:@"position"];
[animation setPath:path];
[animation setDuration:1.5];
[animation setCalculationMode:kCAAnimationLinear];
NSArray *arr = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.12],
[NSNumber numberWithFloat:0.24],
[NSNumber numberWithFloat:0.36],
[NSNumber numberWithFloat:0.48],
[NSNumber numberWithFloat:0.60],
[NSNumber numberWithFloat:0.72],
[NSNumber numberWithFloat:0.84],
[NSNumber numberWithFloat:1.0],nil];
[animation setKeyTimes:arr];
[animation setTimingFunctions:[NSArray arrayWithObjects:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut], nil]];
//[animation setAutoreverses:YES];
CFRelease(path);
return animation;
}
- (void)monBtnIn {
[monButton.layer setPosition:CGPointMake(113.5,194)];
[monButton.layer addAnimation:[self monInAnimation]
forKey:@"position"];
}
यह अच्छा काम करता है ... धन्यवाद। मैंने एक अवधि जोड़ा था। मैं एफटीयूटिलिस की जांच करूंगा - धन्यवाद। – Jonathan
आप कीपैथ का उपयोग करके "transform.scale" के रूप में केवल संख्याओं का उपयोग कर सकते हैं। यही है ना ? –