¿Cómo crear el efecto de icono tambaleante del iPhone?

Quiero tambalear una imagen de un lado a otro en mi aplicación de forma similar a cómo se tambalean los íconos del iPhone cuando la presionas. ¿Cuál es la mejor manera de hacer eso?

Esta es mi primera incursión en animaciones que no usan un GIF animado. Creo que la idea es girar ligeramente la imagen hacia adelante y hacia atrás para crear el efecto de bamboleo. He visto el uso de CABasicAnimation y CAKeyframeAnimation. CABasicAnimation crea una inquietud cada vez que se repite porque salta a la posición de origen y no se interpola hacia atrás. CAKeyframeAnimation parece ser la solución, excepto que no puedo hacer que funcione. Debo estar perdiendo algo. Aquí está mi código usando CAKeyframeAnimation (que no funciona):

    NSString *keypath = @"wobbleImage";
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:keypath];
animation.duration = 1.0f;
animation.delegate = self;
animation.repeatCount = 5;

CGFloat wobbleAngle = 0.0872664626f;
NSValue *initial = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.0f, 0.0f, 0.0f, 1.0f)];
NSValue *middle = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(wobbleAngle, 0.0f, 0.0f, 1.0f)];
NSValue *final = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(-wobbleAngle, 0.0f, 0.0f, 1.0f)];
animation.values = [NSArray arrayWithObjects:initial, middle, final, nil];

[imageView.layer addAnimation:animation forKey:keypath];


O podría haber una solución totalmente más simple que me falta. Apreciamos cualquier puntero. ¡Gracias

Respuestas a la pregunta(24)

Su respuesta a la pregunta