CAKeyframeAnimation 可以与路径而不是关键帧值一起使用来动画(非位置)属性吗?这是关键代码:
CAKeyframeAnimation *theLeftGradientAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
theLeftGradientAnimation.removedOnCompletion = NO;
theLeftGradientAnimation.fillMode = kCAFillModeForwards;
theLeftGradientAnimation.duration = (isToClose ? self.fromDuration : self.toDuration);
//test with a linear monotonic path to define the opacity function response
UIBezierPath *shadePath = [UIBezierPath bezierPath];
[shadePath moveToPoint:CGPointMake(0.0f, 0.0)]; //ASSUME coords are: x->t y->alpha(t)
[shadePath addLineToPoint:CGPointMake(1.0f, 1.0f)]; //ASSUME time normalized to duration
[shadePath closePath];
theLeftGradientAnimation.path = shadePath.CGPath;
但是,这不能正常工作-不透明度确实可以平滑地动画,尽管不是单调的或完全根据路径的变化(假设路径从 (0.0,0.0) 到 (1.0,1.0) 像缓动一样“标准化”功能)。请注意,我没有为位置设置动画或在路径上移动图层,但希望将其用于任何可动画属性。
文档中有一些含糊之处,表明可以使用路径来有效地定义动画时间与动画属性的传递函数(从而替代将基于该传递函数创建的关键帧值数组) . 同样在“关键帧计时和起搏扩展”的 iOS 6 文档中,确实试图澄清路径与值的使用,但仍然模棱两可。