gpt4 book ai didi

ios - 为什么核心动画类型采用字符串键路径?

转载 作者:可可西里 更新时间:2023-10-31 23:56:45 30 4
gpt4 key购买 nike

当为 CALayer 上的特定属性设置动画时,我很困惑为什么 keyPath 是一个字符串。使用枚举不是更好更安全吗?只是想知道输入字符串文字的优势。

示例:let flash = CASSpringAnimation(keyPath: "borderColor")

最佳答案

虽然 Josh Homann 的回答非常有帮助,但同样值得注意的是,在这种情况下没有可以工作的特定枚举。 CASpringAnimation 可以应用于任何属性,而不仅仅是内置属性。甚至“内置”也是一种误导,因为有许多内置的 CALayer 子类,它们本身具有不同的属性。动画甚至不必应用于层(SceneKit 也使用它们)。如果您将自定义属性添加到图层,并希望使用 Spring 动画对其进行动画处理,那么如果这是一个枚举,那将是不可能的。

也就是说,你可以做得比在这里传递一个字符串(甚至是一个字符串常量)更好。您可以使用 #keyPath:

let flash = CASpringAnimation(keyPath: #keyPath(CALayer.borderColor))

这提供了编译时检查是否确实定义了此方法。这实现了您使用枚举寻找的大部分目标,同时足够灵活以处理任何目标和属性。

在未来,希望 Core Animation 能够接受新的 Swift 4“KeyPath”类型,您将能够做到这一点:

let flash = CASpringAnimation(keyPath: \CALayer.borderColor)

关于ios - 为什么核心动画类型采用字符串键路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533173/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com