Ключевые пути CATransform3D с помощью #keyPath

Можно ли использовать расширенный путь ключа (как описано здесь) для свойства CATransform3D в Swift 3 с новым ключевым словом #keyPath?

Другими словами заменить

let scaleAnimation = CABasicAnimation(keyPath: "transform.scale")

с чем-то вроде

let scaleAnimation = CABasicAnimation(keyPath:  #keyPath(CALayer.transform.???))

1 ответ

Должна использоваться функция CAValue.

let scaleAnimation = CABasicAnimation(keyPath: "transform.scale")

->

let scaleAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.transform))
scaleAnimation.valueFunction = CAValueFunction(name: kCAValueFunctionScale)

а также

let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation")

->

let rotationAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.transform))
rotationAnimation.valueFunction = CAValueFunction(name: kCAValueFunctionRotateZ)

и т.п.

  • rotation.x -> kCAValueFunctionRotateX
  • rotation.y -> kCAValueFunctionRotateY
  • rotation.z -> kCAValueFunctionRotateZ
  • rotation -> kCAValueFunctionRotateZ
  • scale.x -> kCAValueFunctionScaleX
  • scale.y -> kCAValueFunctionScaleY
  • scale.z -> kCAValueFunctionScaleZ
  • scale -> kCAValueFunctionScale
  • translation.x -> kCAValueFunctionTranslateX
  • translation.y -> kCAValueFunctionTranslateY
  • translation.z -> kCAValueFunctionTranslateZ
  • translation -> kCAValueFunctionTranslate
Другие вопросы по тегам