Странное поведение CALayer - PullRequest
       0

Странное поведение CALayer

1 голос
/ 30 декабря 2010

Iv анимировал CALayer для перемещения по кривой. Когда анимация завершена, я скрываю слой в делегате animationDidStop. Скажем, я установил значение frame.origin слоя в точке x. И я оживляю слой для перемещения из точки x в точку y. Как только анимация останавливается, я устанавливаю слой скрытым. Тем не менее, слой появляется один раз в точке х, прежде чем скрыться. Почему это происходит? Как я могу остановить это и скрыть слой сразу после остановки анимации, когда он достигает точки y?

-(void)doAnimation  
{  
UIImage *movingImage = [UIImage imageNamed:@"XYZ.png"];  
movingLayer = [CALayer layer];   
 movingLayer.contents = (id)movingImage.CGImage;  
 movingLayer.anchorPoint = CGPointZero;  
 movingLayer.frame = CGRectMake(700.0f, 50.0f, movingImage.size.width, movingImage.size.height);  
 [self.view.layer addSublayer:movingLayer];

UIBezierPath *customPath = [UIBezierPath bezierPath];  
[customPath moveToPoint:CGPointMake(700,50)];  
[customPath addQuadCurveToPoint:CGPointMake(550, 50) controlPoint:CGPointMake(630, 10)];  
[customPath addQuadCurveToPoint:CGPointMake(270, 33) controlPoint:CGPointMake(355, -10)];  
[customPath addQuadCurveToPoint:CGPointMake(120, 0) controlPoint:CGPointMake(190, 0)];   
[customPath addLineToPoint:CGPointMake(-20, 20)];  

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];  
 pathAnimation.duration = 6.5f;  
 pathAnimation.path = customPath.CGPath;  
 pathAnimation.calculationMode = kCAAnimationLinear;  
 pathAnimation.delegate=self;  
 [movingLayer addAnimation:pathAnimation forKey:@"movingAnimation"];

}


-(void)animationDidStop:(CAAnimation *)animID finished:(BOOL)didFinish  
{  
movingLayer.hidden=YES;  
}

1 Ответ

0 голосов
/ 30 декабря 2010

Когда вы запускаете анимацию, вы должны установить положение слоя в пункте назначения.

...