如何在CAShapeLayer动画中使用Swift 4 KeyPath

wm.*_*1us 5 ios swift swift4

如果我编写Swift 3代码,它将看起来像这样:

let animation = CABasicAnimation(keyPath: #keyPath(CAShapeLayer.path))
Run Code Online (Sandbox Code Playgroud)

但是我尝试对keyPath使用Swift 4新语法,并且得到了:

let keyPath = \CAShapeLayer.path
let animation = CABasicAnimation(keyPath: keyPath) // error line
Run Code Online (Sandbox Code Playgroud)

>错误:无法将类型“ ReferenceWritableKeyPath”的值转换为预期的参数类型“字符串?”

在这种情况下,如何使用Swift 4使用密钥路径?

Dam*_*aux 7

就目前而言,CABasicAnimation仍然使用旧的StringkeyPaths,因此#keyPath(CAShapeLayer.path)即使您使用的是Swift 4 ,也应该仍然使用。

Apple将来可能会更新其所有API,以利用这些更安全的密钥路径引用。但是目前,您仍然受困于“不安全”的字符串。