Как я могу узнать значения в cabasicanimation keyPath

Я нахожу такой код:

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-это aLayer.преобразиться.масштаб. "преобразование" - это свойство CALayer, "масштаб" - это "имущество" преобразования. Но преобразование свойств в CALayer-это CATransform3D.

в CATransform3D нет свойства с именем "масштаб" или "вращение".

мой вопрос: Как определяются "масштаб" и "вращение" на путь ?

2 ответов


Core Animation расширяет KVC для поддержки прямой адресации полей (или псевдо-полей) некоторых свойств структурного типа слоев. Функция описана в Основные Расширения Анимации Для Кодирования Ключевых Значений.


Я не уверен, но я нашел решение, которое, вероятно, может помочь.

В SWIFT: Вместо того, чтобы писать строку, вы можете использовать это:

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

при вводе CALayer.

надеюсь, это поможет.