0

在我的应用程序中,我尝试使用 keyPath 添加以下动画,frame如下所示

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"frame"];
    animation.duration=0.6;
    animation.repeatCount=1;
    animation.delegate=self;
    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    animation.fromValue=[NSValue valueWithCGRect:self.layer.frame];
    animation.toValue=[NSValue valueWithCGRect:rect];//rect is a new frame 
    [self.layer addAnimation:animation forKey:@"frameChange"];
    [self setFrame:rect];

上述方法没有发生动画,但我成功地animationDidStop:(CAAnimation *)anim finished: 调用了委托方法。

但是下面的位置属性动画效果很好

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"position"];
animation.duration=0.6;
animation.repeatCount=1;
animation.delegate=self;
animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.fromValue=[NSValue valueWithCGPoint:self.layer.position];
animation.toValue=[NSValue valueWithCGPoint:rect.origin];
[self.layer addAnimation:animation forKey:@"frameChange"];

为什么 frame 属性没有动画?

4

1 回答 1

3

Frame 不是动画属性。您必须为位置和边界制作动画。要将它们同时放在一起,请将它们放在 CAAnimationGroup 中。

于 2013-01-09T06:39:40.183 回答