इसके केंद्र लेकिन कई बार चारों ओर एक UIView बारी बारी से

वोट
16

मैं कुछ बारी बारी से करने की कोशिश कर रहा हूँ UIViewइतना आसान कोड (स्यूडोकोड में) की तरह कुछ चला जाता है, इसके केंद्र के चारों ओर:

[UIView beginAnimations:@crazyRotate context:nil];
[UIView setAnimationDuration:1.0];
someview.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations]

अब M_PI / 2 बात अच्छी तरह से घूमता है कहने के लिए अगर मैं कोण सेट। अगर मैं इसे करने के लिए 2 * M_PI निर्धारित करते हैं, अच्छी तरह से यह कुछ नहीं करता है। मैं समझ सकता हूँ कि मैट्रिक्स कुछ है कि कुछ नहीं करता है (एक अर्थ में 360 साधन घूर्णन मनाने) करने के लिए अनुवाद है, फिर भी, मैं (एक समाचार पत्र के बारे में सोच उसे घुमाने के लिए 5 बार पैमाने आप प्रभाव में आने वाले घुमा चाहता हूँ - मैं नहीं कर रहा हूँ का वर्णन में महान, आशा है कि किसी को समझता है)। तो, मैं 180 डिग्री (M_PI) और एक नेस्टेड जोड़ने के लिए की स्थापना कोण जोड़ने की कोशिश की animatationBlock। लेकिन मुझे लगता है कि है कि के बाद से मैं एक ही संपत्ति सेट कर रहा हूं ( someview.transition) इसे फिर से यह किसी भी तरह की उपेक्षा करता है)। मैं कोण M_PI के साथ 2 करने के लिए एनीमेशन का बार-बार गिनती की स्थापना की कोशिश की लेकिन यह केवल 180 को घुमाने के लिए, सीधी स्थिति में वापस जाने के लिए और फिर घुमाने के फिर से शुरू करने लगता है।

तो, मैं विचारों से बाहर एक छोटे से कर रहा हूँ, किसी भी मदद की सराहना की! --टी

06/02/2009 को 00:49
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
36

आप अपने UIView की परत संपत्ति पर निम्नलिखित एनीमेशन का उपयोग कर सकते हैं। मैं यह परीक्षण किया है।

UIView *viewToSpin = ...;    
CABasicAnimation* spinAnimation = [CABasicAnimation
                                  animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
[viewToSpin.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
06/02/2009 को 01:26
का स्रोत उपयोगकर्ता

वोट
6

के रूप में ब्रैड लार्सन संकेत दिया, तो आप एक साथ कर सकते हैं CAKeyframeAnimation। उदाहरण के लिए,

CAKeyframeAnimation *rotationAnimation;
rotationAnimation = 
   [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];

rotationAnimation.values = [NSArray arrayWithObjects:
                            [NSNumber numberWithFloat:0.0 * M_PI], 
                            [NSNumber numberWithFloat:0.75 * M_PI], 
                            [NSNumber numberWithFloat:1.5 * M_PI], 
                            [NSNumber numberWithFloat:2.0 * M_PI], nil]; 
rotationAnimation.calculationMode = kCAAnimationPaced;
rotationAnimation.removedOnCompletion = NO;
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.timingFunction = 
   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
rotationAnimation.duration = 10.0;

CALayer *layer = [viewToSpin layer];
[layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

आप के साथ कुल एनीमेशन की अवधि नियंत्रित कर सकते हैं rotationAnimation.durationके साथ संपत्ति, और (बीच में और कदम की गणना) त्वरण और मंदी rotationAnimation.timingFunctionसंपत्ति।

29/02/2012 को 00:37
का स्रोत उपयोगकर्ता

वोट
1
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 8.0f;
animation.repeatCount = INFINITY;
[self.myView.layer addAnimation:animation forKey:@"SpinAnimation"];
22/06/2015 को 15:35
का स्रोत उपयोगकर्ता

वोट
1

एक सतत कताई प्रभाव प्राप्त करना एक छोटे से मुश्किल है, लेकिन मैं यह करने के लिए एक साधन का वर्णन यहाँ । हाँ, कोर एनिमेशन इकाई वृत्त के भीतर सबसे करीब समाप्त होने की स्थिति में रूपांतरण अनुकूलन करने के लिए लगता है। विधि मैं एक साथ वहाँ जंजीरों में कुछ आधा रोटेशन एनिमेशन का वर्णन पूर्ण रोटेशन बनाने के लिए है, हालांकि आप एक एनीमेशन से अगले handoff में मामूली हकलाना नोटिस करते हैं।

शायद एक CAKeyframeAnimation इन आधा रोटेशन मूल्यों के साथ निर्माण किया जाना सही तरीके से किया जाएगा। तो फिर तुम भी त्वरण और मंदी को नियंत्रित कर सकता है।

06/02/2009 को 14:50
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more