如何知道CABasicAnimation keyPath中的值

时间:2011-03-28 13:28:52

标签: iphone calayer cabasicanimation

我找到了这样的代码:

CABasicAnimation *anim = [CABasicAnimation animation];
anim.keyPath = @"transform.scale";
anim.fromValue = [NSNumber numberWithFloat:1.0];
anim.toValue = [NSNumber numberWithFloat:0];
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeBoth;
anim.delegate = self;
[self.view.layer addAnimation:anim forKey:@"scaleOut"];

anim.keyPath = @"transform.rotation.x";

据我所知,keyPath是一个链式方法调用。 CALayer的“transform.scale”是aLayer.transform.scale。 “transform”是CALayer的一个属性,“scale”是变换的“属性”。但CALayer中的属性转换是CATransform3D。

CATransform3D中没有名为“scale”或“rotation”的属性。

我的问题是: keyPath如何识别“缩放”和“旋转”?

2 个答案:

答案 0 :(得分:25)

Core Animation扩展了KVC,以支持对图层的某些结构类型属性的字段(或伪字段)进行直接寻址。该功能在Core Animation Extensions To Key-Value Coding中进行了描述。

答案 1 :(得分:10)

我不确定,但我找到了一个可能有帮助的解决方案。

IN SWIFT: 您可以使用以下命令代替编写String:

let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius))

键入CALayer时。 < - autocomplete应该为您提供可用的keyPaths。

我希望这会有所帮助。