किसी को मुझे बताओ कि परिपत्र गतिiphone UIImageView रोटेशन
उत्तर
आप मतलब है, तो में एक छवि को घुमाने के लिए कर सकते हैं "? आप कैसे एक छवि एक परिपत्र मार्ग का अनुसरण कर सकता हूँ", तो स्यूडोकोड होगा:
image.x = circleCentre.x + cos(angle) * circleRadius;
image.y = circleCentre.y + sin(angle) * circleRadius;
angle += 5;
This question, एक ही बात पूछता अलग शब्दों में, हालांकि। कि प्रश्न में जवाब, साथ ही this question में के रूप में एक UIView चेतन के लिए एक रास्ता प्रदान करना चाहिए 360 डिग्री या अधिक के लिए अपने केंद्र के बारे में (UIImageView बस इस का एक उपवर्ग है)।
किसी दृश्य को रेडियन में से कुछ संख्या से, बारी बारी से कर सकते हैं कि यह एक पूर्ण रोटेशन या एक पूर्ण रोटेशन के कई गुणकों से भी कम है की परवाह किए बिना टुकड़ों में रोटेशन विभाजित करने के लिए बिना। एक उदाहरण के रूप में, निम्नलिखित कोड एक सेकंड प्रति सेकंड, एक निर्दिष्ट संख्या के लिए एक दृश्य स्पिन करेगा। आप घूर्णन की एक निश्चित संख्या, या कुछ रेडियंस द्वारा दृश्य को स्पिन करने के लिए इसे आसानी से संशोधित कर सकते हैं।
- (void) runSpinAnimationWithDuration:(CGFloat) duration;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
mahboudz के उत्तर के आधार पर, आप इसे असीम स्पिन करने के लिए सेटिंग के द्वारा निर्धारित कर सकते हैं:
rotationAnimation.repeatCount = HUGE_VALF;
एनीमेशन बनाना
- (CABasicAnimation *)spinAnimationWithDuration:(CGFloat)duration clockwise:(BOOL)clockwise repeat:(BOOL)repeats
{
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
anim.toValue = clockwise ? @(M_PI * 2.0) : @(M_PI * -2.0);
anim.duration = duration;
anim.cumulative = YES;
anim.repeatCount = repeats ? CGFLOAT_MAX : 0;
return anim;
}
एक दृश्य
CABasicAnimation *animation = [self spinAnimationWithDuration:1.0 clockwise:YES repeat:YES];
[self.spinningView.layer addAnimation:animation forKey:@"rotationAnimation"];
करने के लिए इसे जोड़े
यह उत्तर अलग कैसे है @ महबौदज़ के जवाब से? यदि आपके कार्यों का सबसे बस यहाँ और वहाँ कुछ वस्तुओं से छेड़छाड़ की वस्तुओं रिटर्न के बजाय आप जिस तरह से क्लीनर कोड होगा।
शायद यू आर रोटेशन और क्रांति के बारे में उलझन। उपर्युक्त सवाल क्रांति के बारे में है। – Biranchi