如何在uiimageview上放置动画动画?

时间:2013-06-03 07:15:03

标签: uiimageview cabasicanimation

我一直在努力实现这一点,但找不到任何可以像iPhone应用程序一样动摇它的代码同时删除它们!

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"];

2 个答案:

答案 0 :(得分: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"];

答案 1 :(得分: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"];
}