I animate my UIImageView with CAAnimation using layer property like so:
[imageView.layer addAnimation:pathAnimation forKey:[NSString stringWithFormat:@"pathAnimation%@",objId]];
But at the end of my animation (after object has moved from original point) when I read the frame’s X Y coordinates or center coordinates they always appear to be original ones, not those where the object has moved to.
How to read layer’s coordinates so I determine the correct location of my moving object?
Here is my code:
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
imageView.image = [UIImage imageNamed:@"banner1.jpg"];
imageView.animationDuration = 2;
imageView.animationRepeatCount = 0;
imageView.tag = 100000;
imageView.layer.frame = imageView.frame;
[self.view addSubview:imageView];
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = 2.0f;
pathAnimation.delegate=self;
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
CGMutablePathRef pointPath = CGPathCreateMutable();
CGPathMoveToPoint(pointPath, NULL, 100, 100);
CGPathAddLineToPoint(pointPath, NULL, 300, 200);
CGPathAddLineToPoint(pointPath, NULL, 200, 150);
pathAnimation.path = pointPath;
CGPathRelease(pointPath);
[imageView.layer addAnimation:pathAnimation forKey:@"pathAnimation"];
[imageView release];
If you animate layer, the view that contains layer will remain at same place so frame will remain same. layer also have frame, bound and position properties, so try reading properties of layer.
EDIT:
I found following explanation in CAKeyframeAnimation Class Reference.
and for knowing what is render tree I found it here.
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/CoreAnimationArchitecture.html#//apple_ref/doc/uid/TP40006655-SW1
Seems that values are getting updated in render tree and as render tree is different from presentation and private we cannot access it.
Following is last paragraph of above link.
Baseed on this a work around can be to calculate new position of layer based on the paths you provided and setting presentation layer frame property accordingly.
Please write here in case you find any update…..