Para animar a lo largo de una curva suave, querrá utilizar una CAKeyframeAnimation. En this answer proporciono el código de una animación combinada que mueve una vista de imagen a lo largo de una curva, mientras la cambia de tamaño y la desvanece. La parte pertinente de dicho código es el siguiente:
// Set up path movement
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
CGPoint endPoint = CGPointMake(480.0f - 30.0f, 40.0f);
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y);
CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, viewOrigin.y, endPoint.x, viewOrigin.y, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
Esto crea una curva con dos puntos de control, uno en el origen de la vista y el otro en la esquina superior derecha de la pantalla (en modo horizontal) Para obtener más información sobre la construcción de rutas, consulte Quartz 2D Programming Guide o Animation Types and Timing Programming Guide.
Para utilizar esta animación, tendrá que añadirlo a la capa de vista utilizando algo como lo siguiente:
[imageViewForAnimation.layer addAnimation:pathAnimation forKey:@"curveAnimation"];
¿Por qué no deter ne la nueva coordenada del punto superior izquierdo de la caja matemáticamente y traducir las coordenadas en consecuencia? –
En español: Parabolicamente;) – Escualo
@James - por lo que puedo ver, eso solo se traduciría a lo largo de una línea, pero no quiero que esté en una diagonal como esa. Quiero que esté en una curva. – bpapa