如何知道CABasicAnimation keyPath中的值

Sai*_*ing 21 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"];
Run Code Online (Sandbox Code Playgroud)

anim.keyPath = @"transform.rotation.x";
Run Code Online (Sandbox Code Playgroud)

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

CATransform3D中没有名为"scale"或"rotation"的属性.

我的问题是:keyPath如何识别"缩放"和"轮换"?

Nik*_*uhe 25

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

  • 例如,`scale.xy`不在该列表中.所以它不完整.我应该在哪里找到所有关键路径或丢失的路径? (8认同)

小智 11

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

IN SWIFT: 您可以使用以下代码而不是编写String:

let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius))
Run Code Online (Sandbox Code Playgroud)

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

我希望这有帮助.

  • OMG难道Apple不能为此创建一个枚举?仍然无法在此方法中找到``transform.rotation.z"` (5认同)