2012-10-14 4 views
6

हैलो मेरे पास एक ऐसी छवि है जिसे मैं ऊपर और नीचे ले जाना चाहता हूं (ऊपर 10 पिक्सल और नीचे 10 पिक्सल) ताकि मेरी छवि होवर हो। मैं सरल एनीमेशन के साथ ऐसा कैसे कर सकता हूं !!!UIImageView ऊपर और नीचे (जैसे यह होवरिंग) में यूआईएममेज को एनिमेट करें लूप

उत्तर

22

आप कोर एनिमेशन इस्तेमाल कर सकते हैं विचारों परत की स्थिति चेतन करने के लिए इस ट्यूटोरियल आप कुछ विचार दे सकता है। यदि आप एनीमेशन को additive पर कॉन्फ़िगर करते हैं तो आपको नई पूर्ण स्थिति की गणना करने की आवश्यकता नहीं होगी, केवल परिवर्तन (सापेक्ष स्थिति)।

CABasicAnimation *hover = [CABasicAnimation animationWithKeyPath:@"position"]; 
hover.additive = YES; // fromValue and toValue will be relative instead of absolute values 
hover.fromValue = [NSValue valueWithCGPoint:CGPointZero]; 
hover.toValue = [NSValue valueWithCGPoint:CGPointMake(0.0, -10.0)]; // y increases downwards on iOS 
hover.autoreverses = YES; // Animate back to normal afterwards 
hover.duration = 0.2; // The duration for one part of the animation (0.2 up and 0.2 down) 
hover.repeatCount = INFINITY; // The number of times the animation should repeat 
[myView.layer addAnimation:hover forKey:@"myHoverAnimation"]; 

इस के बाद से कोर एनिमेशन का उपयोग कर रहा है कि आप अपने कोड में QuartzCore.framework और #import <QuartzCore/QuartzCore.h> जोड़ने की आवश्यकता होगी।

+0

घुमाने के लिए कैसे करें यह आदमी बेहतर तरीके से काम करता है! न केवल समझना आसान था, लेकिन मैं वास्तव में अलग-अलग मूल्यों को आजमा सकता था जो समझ में आया! बहुत बहुत धन्यवाद!!! – Year3000

+0

धन्यवाद डेविड। तुम मेरा समय बचाओ यह बढ़िया काम करता है। – Smita

0

ऐसे कार्य के लिए, UIView के एक उपन्यास में एक छवि डालना बेहतर होगा, और उसके बाद उस सबबेलर फ्रेम को एनिमेट करें। http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial

+0

ट्यूटोरियल आप से जुड़ा हुआ कैसे एनीमेशन करने के लिए की व्याख्या नहीं करता। –

+0

परतों पर संचालन स्वचालित रूप से एनिमेटेड होते हैं। –

+0

हां, उनके पास अंतर्निहित एनिमेशन हैं यदि वे स्टैंडअलोन परतें हैं लेकिन ये वापस एनिमेट नहीं करते हैं। –

5

इस प्रयास करें::

CGRect frm_up = imageView.frame; 
frm_up.origin.y -= 10; 

[UIView animateWithDuration:0.5 
    delay:0.0 
    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeats 
    animations:^{ 
     imageView.frame = frm_up; 
    } 
    completion:NULL 
]; 
+0

यह कमाल का काम करता है! केवल एक चीज यह है कि यह ऊपर और बाईं ओर बढ़ती है। विकर्ण जैसे कि यह 0,0 अंक पर जा रहा है। – Year3000

+0

@ वर्ष 3000 वह कैसा है? 1. मैं फ्रेम की एक्स दिशा के लिए बिल्कुल कुछ भी नहीं कर रहा हूँ। 2. केवल एक चीज जो मैं बदलता हूं वह वाई स्थिति है, हालांकि इसे स्वचालित रूप से माना जाना चाहिए (विधि कॉल के 'विकल्प' तर्क देखें)। मुझे यकीन है कि आप कुछ याद कर रहे हैं। –

+0

आईडीके यह अजीब है। मेरा फ्रेम है (86, 1 9 81, 132, 217) और मैं आपके द्वारा अनुशंसित की गई चीज़ों का उपयोग कर रहा हूं और यह छवि के केंद्र की तरह है 0 देखें। – Year3000

7

स्विफ्ट 3 और स्विफ्ट 4 के लिए:

let hover = CABasicAnimation(keyPath: "position") 

hover.isAdditive = true 
hover.fromValue = NSValue(cgPoint: CGPoint.zero) 
hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0, y: 100.0)) 
hover.autoreverses = true 
hover.duration = 2 
hover.repeatCount = Float.infinity 

myView.layer.add(hover, forKey: "myHoverAnimation") 
संबंधित मुद्दे