2011-08-11 17 views
7

पर आईफोन "Wobbly" एनीमेशन मैं एक आइकन "हिलाने" की कोशिश कर रहा हूँ।UiImageView

मेरी नियंत्रक लोड हो रहा है पर मैं इस तरह एक टाइमर बनाने के लिए:

[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(shakeIphonePic) userInfo:nil repeats:YES]; 

और यहाँ मेरी शेकर विधि है:

- (void)shakeIphonePic 
{ 
    [UIView animateWithDuration:0.09 
          delay:0 
         options:UIViewAnimationOptionAllowUserInteraction 
        animations:^{ 
         self.iphonePic.layer.transform = CATransform3DMakeRotation(DegreesToRadians(8.0), 0.0, 0.0, 1.0); 
        } 
        completion:^(BOOL finished) { 
         [UIView animateWithDuration:0.09 
             animations:^(void) { 
              self.iphonePic.layer.transform = CATransform3DMakeRotation(DegreesToRadians(-16.0), 0.0, 0.0, 1.0); 
             }]; 
        } 
    ]; 
} 

यह रूप में अच्छा के रूप में मैं उम्मीद नहीं है, लेकिन ... यह नहीं है मुख्य समस्या।

ऐसा लगता है कि यह मेरे यूआई के बाकी हिस्सों को नाटकीय रूप से धीमा कर देता है, जो पहले अच्छा था।

क्या आप मुझे अपना आइकन हिलाकर एक और अधिक प्रभावी तरीका सुझा सकते हैं?

उत्तर

27
CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
[anim setToValue:[NSNumber numberWithFloat:0.0f]]; 
[anim setFromValue:[NSNumber numberWithDouble:M_PI/16]]; // rotation angle 
[anim setDuration:0.1]; 
[anim setRepeatCount:NSUIntegerMax]; 
[anim setAutoreverses:YES]; 
[self.viewYouAreShaking.layer addAnimation:anim forKey:@"iconShake"]; 

स्विफ्ट संस्करण

let anim=CABasicAnimation(keyPath: "transform.rotation") 
anim.toValue=NSNumber(double: -M_PI/16) 
anim.fromValue=NSNumber(double: M_PI/16) 
anim.duration=0.1 
anim.repeatCount=1.5 
anim.autoreverses=true 
viewYouAreShaking.layer.addAnimation(anim, forKey: "iconShake") 
+1

एक अच्छा परिचय मैट Neuburg द्वारा प्रोग्रामिंग iOS4 के एनीमेशन अध्याय है। एक सार्वजनिक मसौदा http://www.apeth.com/iOSBook/ch17.html – Jano

+0

पर उपलब्ध है आप एनीमेशन को कैसे बंद करते हैं? मैंने '[self.viewYouAreShaking.layer removeAllAnimations] की कोशिश की; 'लेकिन आपकी उंगली उठाने के बाद हिलना बंद हो जाता है। मैं इसे लंबे समय तक दबाए जाने वाले स्पर्श को अनदेखा कैसे कर सकता हूं और केवल लंबे समय तक दबाए जाने वाले स्पर्श को पहचान सकता हूं? – Mason