在我的应用程序中,我尝试使用 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 属性没有动画?