2009-09-14 14 views

उत्तर

2

आप मतलब है, तो में एक छवि को घुमाने के लिए कर सकते हैं "? आप कैसे एक छवि एक परिपत्र मार्ग का अनुसरण कर सकता हूँ", तो स्यूडोकोड होगा:

image.x = circleCentre.x + cos(angle) * circleRadius; 
image.y = circleCentre.y + sin(angle) * circleRadius; 
angle += 5; 
1

This question, एक ही बात पूछता अलग शब्दों में, हालांकि। कि प्रश्न में जवाब, साथ ही this question में के रूप में एक UIView चेतन के लिए एक रास्ता प्रदान करना चाहिए 360 डिग्री या अधिक के लिए अपने केंद्र के बारे में (UIImageView बस इस का एक उपवर्ग है)।

+0

शायद यू आर रोटेशन और क्रांति के बारे में उलझन। उपर्युक्त सवाल क्रांति के बारे में है। – Biranchi

28

किसी दृश्य को रेडियन में से कुछ संख्या से, बारी बारी से कर सकते हैं कि यह एक पूर्ण रोटेशन या एक पूर्ण रोटेशन के कई गुणकों से भी कम है की परवाह किए बिना टुकड़ों में रोटेशन विभाजित करने के लिए बिना। एक उदाहरण के रूप में, निम्नलिखित कोड एक सेकंड प्रति सेकंड, एक निर्दिष्ट संख्या के लिए एक दृश्य स्पिन करेगा। आप घूर्णन की एक निश्चित संख्या, या कुछ रेडियंस द्वारा दृश्य को स्पिन करने के लिए इसे आसानी से संशोधित कर सकते हैं।

- (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"]; 
} 
+0

मैं एक त्रुटि हो रही है, "रोटेशन अघोषित" – abhinav

+3

रोटेशन एक स्थिरांक है। समय की अवधि में घूमने के लिए दृश्य को कितनी बार देखना चाहते हैं उसे बदलें। – mahboudz

3

mahboudz के उत्तर के आधार पर, आप इसे असीम स्पिन करने के लिए सेटिंग के द्वारा निर्धारित कर सकते हैं:
rotationAnimation.repeatCount = HUGE_VALF;

1

एनीमेशन बनाना

- (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"]; 
करने के लिए इसे जोड़े

यह उत्तर अलग कैसे है @ महबौदज़ के जवाब से? यदि आपके कार्यों का सबसे बस यहाँ और वहाँ कुछ वस्तुओं से छेड़छाड़ की वस्तुओं रिटर्न के बजाय आप जिस तरह से क्लीनर कोड होगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^