#iphone #objective-c #calayer #cgpath #cakeyframeanimation
#iPhone #objective-c #calayer #cgpath #cakeyframeanimation
Вопрос:
hI,
I am workng on animation using CALayer and CAPath.
Here I am animating an Image from top to bottom of screen.I gave starting and ending position for
the animation.Now, I want to get position during the animation.
Sample Code:
- (void)onTimer
{
CGImageRef imageRef = [[UIImage imageNamed:@"apple.png"] CGImage];
int startX = round(random() % 460);
double speed = 1 / round(random() %100) 1.0;
layer = [CALayer layer];
layer.name = @"layer";
layer.contents = (id)imageRef; // cached image
layer.frame = CGRectMake(startX, self.view.frame.size.height 10, CGImageGetWidth(imageRef), CGImageGetHeight(imageRef));
[mView.layer addSublayer:layer];
path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, startX, -100);
CGPathAddLineToPoint(path, NULL, startX, self.view.frame.size.height 10);
CAKeyframeAnimation *animation= [CAKeyframeAnimation animationWithKeyPath:@"position"];
animation.delegate=self;
animation.duration= 10*speed;
animation.autoreverses=NO;
animation.path=path;
animation.repeatCount = 0;
animation.removedOnCompletion=YES;
animation.calculationMode = kCAAnimationLinear;
[layer addAnimation:animation forKey:@"position"];
CGPoint point= CGPathGetCurrentPoint(path);
}
In this I used "CGPathGetCurrentPoint" method but it did not work. Also used
presentationLayer method of CALayer but uit also did not work in this case.
Can anyone suggest the code to get the position during animation
thanks in advance
Ответ №1:
Вы можете получить значение того, что вы видите на экране во время анимации, просмотрев свойства слоя presentationLayer.
Ответ №2:
Основная анимация не была предназначена для этого. Его задача — обрабатывать анимацию свойств за вас, а не подвергать вас ей.
Если вы хотите узнать его положение во время анимации, тогда вам нужно будет выполнить всю анимацию самостоятельно, без основной анимации.
CGPathGetCurrentPoint()
это функция, которая обращается к контрольным точкам CGPath
экземпляров, а не к путям анимации ключевых кадров основной анимации.