私はこのようないくつかのコードを見つけます:
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によってどのように識別されますか?
Core Animationは、KVCを拡張して、レイヤーの一部の構造体タイプのプロパティのフィールド(または疑似フィールド)の直接アドレス指定をサポートします。この機能については、 Key-ValueコーディングへのCore Animation拡張機能 で説明されています。
よくわかりませんが、おそらく役立つ解決策を見つけました。
IN Swift:文字列を書く代わりに、これを使用できます:
let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius))
CALayerと入力するとき。 <-オートコンプリートにより、使用可能なkeyPathが提供されます。
これがお役に立てば幸いです。