Ключевые пути 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