开发者

Manipulating UIImageView During Animation with CAKeyframeAnimation

开发者 https://www.devze.com 2023-04-01 11:10 出处:网络
I need to move object (UIImageView) from point A to point B, then rotate image at point B by 180 degrees to face开发者_StackOverflow the opposite direction and move object from B to A (backwards).

I need to move object (UIImageView) from point A to point B, then rotate image at point B by 180 degrees to face开发者_StackOverflow the opposite direction and move object from B to A (backwards).

I have the code below which moves from A to B. I also know how to rotate UIImageView. But how to know when object has reached point B and how to apply rotation action considering there are many objects on the screen?

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation    animationWithKeyPath:@"position"];
pathAnimation.duration = speed;
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO; 
CGMutablePathRef pointPath = CGPathCreateMutable();
CGPathMoveToPoint(pointPath, NULL, rect.origin.x, rect.origin.y);
CGPathAddLineToPoint(pointPath, NULL, x, y);
pathAnimation.path = pointPath;
CGPathRelease(pointPath);   
[imageView.layer addAnimation:pathAnimation forKey:[NSString    stringWithFormat:@"pathAnimation%@",objId]];
[imageView release];


Set a delegate on the CAAnimation object, and in the delegate implement the animationDidStop:finished: method.

OTOH, the animation you described sounds like it could be done easily enough with UIView's animation support. See Animating Views with Blocks if you're targeting 4.0 and up, or Animating Views if you're still targeting earlier versions.


You can use the CAAnimation delegate method

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
0

精彩评论

暂无评论...
验证码 换一张
取 消