2012-11-14 36 views
5

के माध्यम से CALayer को ले जाएं मेरे पास एक परत है जो UIAezierPath पर बिंदु ए से बिंदु बी तक चली जाएगी। मुझे कई नमूने मिल गए हैं जो CAAnimation और UIBezierPath को संदर्भित करते हैं। लेकिन मुझे अपनी परत केवल निर्दिष्ट बिंदु से दूसरे पर बेजियर पथ पर ले जाने की आवश्यकता है।UIBezierPath

enter image description here

कोई सुझाव की सराहना की जाएगी।

धन्यवाद

+0

क्यों सिर्फ पथ सेगमेंट यह पता लगाने और प्रयोग है कि एनीमेशन पथ –

+0

के रूप में नहीं इस जवाब देखें: http://stackoverflow.com/questions/1142727/how-can-i-animate-the-movement- एक-दृश्य-या-छवि-साथ-एक-घुमावदार पथ – buildsucceeded

उत्तर

1

मैं कुछ इस तरह करते हैं और इस ट्यूटोरियल झरना करने के लिए तलाश कर दिया गया चाहिए, यह कैसे एक विशिष्ट मार्ग का अनुसरण करने को दर्शाता है। यह एक कार (एक CALayer) और रेस ट्रैक के रूप में एक UIBezierpath साथ काम करता है और इस क्रम में हल किया जाता है:

(अपने BezierPath इस मामले में) पथ कार का पालन करना चाहिए परिभाषित काली रेखा है कि ट्रैक को परिभाषित करता है आकर्षित ; (एन/ए) ट्रैक के सफेद धराशायी केंद्र रेखा को चित्रित करना; (एन/ए) कार को परिभाषित करने वाली परत बनाना; (आपकी परत) पथ के साथ कार को एनिमेट करना।

आप संदर्भ पोस्ट की जांच कर सकते यहाँ (क्या आपके पूछा!): http://nachbaur.com/2011/01/07/core-animation-part-4/

इसके अलावा, आप स्रोत कोड यहाँ डाउनलोड कर सकते हैं: http://cdn5.nachbaur.com/wp-content/uploads/2011/01/CALayerAnimTest.zip?25881d

आशा है कि यह मदद करता है!

संबंध,

जॉर्ज।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन मैं यह नहीं ढूंढ रहा हूं। मैं बेजियर पथ में दो बिंदुओं के बीच स्थानांतरित करने के लिए देख रहा हूँ। पूरा रास्ता नहीं – fyasar

+0

जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। कृपया इसे सही करने के लिए अपना उत्तर संपादित करें, फिर अनइली हटाने का अनुरोध करने के लिए अपनी पोस्ट को ध्वजांकित करें – Matt

2

यदि आपका बेजियर पथ एक सर्कल या आधा सर्कल है, तो आप बस पथ को छोड़ सकते हैं और इसके बजाय बिंदु को एक बड़े वर्ग परत में जोड़ सकते हैं। बिंदु को उस बड़े वर्ग परत के केंद्र से एक निश्चित दूरी के रूप में सेट करें। फिर आप केंद्र के चारों ओर जेड अक्ष पर बड़ी परत को घुमा सकते हैं, जो भी आपको डिग्री करने के लिए आवश्यक डिग्री की आवश्यकता है। ऐसा लगता है कि यह चीजों को थोड़ा सा सरल बना देगा, हालांकि मुझे यकीन नहीं है कि आपको यह करने के लिए और क्या चाहिए।

3

आशा है कि यह सहायक होगा।

UIBezierPath *trackPath = [UIBezierPath bezierPath]; 
. 
. 
. 
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
anim.path = trackPath.CGPath; 
anim.repeatCount = 1; 
anim.duration = 2.0; 
[layerToAnimate addAnimation:anim forKey:@"pathGuide"];