मैं एक UI तत्व को हिलाने/हिलाकर रखने की कोशिश कर रहा हूं, अर्थात् एक नियंत्रण, जैसे कि यह मारा गया था, और गूंज रहा है। मैं इसे खड़ी हिला, क्षैतिज कोर एनिमेशन का उपयोग करें या दोनों, एक पिक्सेल द्वारा कर सकते हैं:यूआई आइटम को कंपन करने का सबसे अच्छा तरीका?
CABasicAnimation* rotationXAnimation;
rotationXAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
rotationXAnimation.fromValue = [NSNumber numberWithFloat: ((UIControl *) sender).center.y-1.0 ];
rotationXAnimation.toValue = [NSNumber numberWithFloat: ((UIControl *) sender).center.y+1.0 ];
rotationXAnimation.duration = 0.2;
rotationXAnimation.cumulative = NO;
rotationXAnimation.repeatCount = 10.0;
rotationXAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[((UIControl *) sender).layer addAnimation:rotationXAnimation forKey:@"upDownAnimation"];
या मैं आगे और पीछे z अक्ष (-M_PI * 0.02 और M_PI * 0.02) के चारों तरफ छोटे चाप से घुमा सकते हैं :
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.fromValue = [NSNumber numberWithFloat: -M_PI * 0.02 ];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 0.02 ];
rotationAnimation.duration = 0.2;
rotationAnimation.cumulative = NO;
rotationAnimation.repeatCount = 10.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[((UIControl *) sender).layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
इनमें से कोई भी आकर्षक नहीं है। क्या किसी के पास कुछ अच्छे विकल्प हैं? मैं विशेष रूप से कोशिश करने के लिए शांत keyPaths विचारों की सराहना करता हूं।
धन्यवाद!
अद्यतन:
निम्नलिखित, मैं कहाँ करार कर रहा हूँ और नियंत्रण का विस्तार, बेहतर है, लेकिन मैं अभी भी अन्य विचारों की तलाश कर रहा हूँ।
CABasicAnimation* scaleAnimation;
scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.fromValue = [NSNumber numberWithFloat: 0.95 ];
scaleAnimation.toValue = [NSNumber numberWithFloat: +1.05 ];
scaleAnimation.duration = 0.1;
scaleAnimation.cumulative = NO;
scaleAnimation.repeatCount = 10.0;
scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[((UIControl *) sender).layer addAnimation:scaleAnimation forKey:@"scaleAnimation"];
यह केवल में है एक दिशा - साइड-टू-साइड - सही? – mahboudz
हां। लेकिन आप एक कीफ्रेम एनीमेशन बना सकते हैं जो एक पथ का उपयोग उसी स्थिति का उपयोग करता है जो 'स्थिति' फ़ील्ड को एनिमेट करता है जो एक CGPoint है। –