2013-06-03 21 views
4

我一直在试图实现这一点,但找不到任何代码,可以摇动它像iPhone应用程序在删除它们时动摇!如何把摇动动画放在uiimageview上?

CABasicAnimation *animation = 
         [CABasicAnimation animationWithKeyPath:@"position"]; 
[animation setDuration:0.05]; 
[animation setRepeatCount:8]; 
[animation setAutoreverses:YES]; 
[animation setFromValue:[NSValue valueWithCGPoint: 
       CGPointMake([lockView center].x - 20.0f, [lockView center].y)]]; 
[animation setToValue:[NSValue valueWithCGPoint: 
       CGPointMake([lockView center].x + 20.0f, [lockView center].y)]]; 
[[lockView layer] addAnimation:animation forKey:@"position"]; 
+0

看到这个答案,它可以帮助你:http://stackoverflow.com/questions/1632364/shake-visual-effect-on-iphone -not-shaking-the-device – pbibergal

回答

6

您可以通过以下代码实现此目的,您可以定义来自和来自的旋转角度。

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]; 
    [[imageView layer] addAnimation:anim forKey:@"iconShake"]; 
+0

谢谢,这段代码有效! – Napster

6

试试这个:

- (void)animateImage 
{ 
    CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 

    CGFloat wobbleAngle = 0.06f; 

    NSValue* valLeft = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(wobbleAngle, 0.0f, 0.0f, 1.0f)]; 
    NSValue* valRight = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(-wobbleAngle, 0.0f, 0.0f, 1.0f)]; 
    animation.values = [NSArray arrayWithObjects:valLeft, valRight, nil]; 

    animation.autoreverses = YES; 
    animation.duration = 0.125; 
    animation.repeatCount = HUGE_VALF; 

    [[lockView layer] addAnimation:animation forKey:@"shakeAnimation"]; 
} 
+0

谢谢它真的很不错... –

+0

工程就像一个魅力!谢谢。 – Edgars