JNWSpringAnimation
是 CAKeyframeAnimation
的子类,它增加了创建阻尼谐波动画的支持。
虽然 JNWSpringAnimation
是 CAKeyframeAnimation
的子类,但它应该被视为 CABasicAnimation
的子类。
要入门,请将四个源文件复制到您的项目中。
可以通过使用专用初始化器 +animationWithKeyPath:
来创建动画。或者,可以使用 +animation
创建动画,然后设置键路径。当前可适配的动画属性列表位于头文件中。
JNWSpringAnimation *animation = [JNWSpringAnimation animationWithKeyPath:@"position.x"];
接下来,必须设置 fromValue
和 toValue
属性,以便正确计算插值值。
animation.toValue = @(toX);
animation.fromValue = @(currentX);
最后,可以可选地更改弹簧常数的值。目前,可以修改的是 stiffness
、damping
和 mass
。
animation.mass = 30; // this will move extremely slowly
// and so on
动画本身可以像任何其他 CAAnimation
子类一样应用,即在任何 CALayer
上使用 -addAnimation:forKey:
。
这是在我的愿望中创建的,我希望有一个开源的 (目前是私人) CASpringAnimation
版本,这是在 iOS 6 中发现的。
在手合适的情况下,弹簧动画可以通过将物理模拟与界面相连接,真正增强用户对应用程序的感受。此外,谁不喜欢摆弄弹簧呢?
我创建了这个周末项目,所以实现仍然有一些未完成。与 CASpringAnimation
相比,velocity
属性仍然未实现。欢迎提交 pull 请求。
JNWSpringAnimation
根据 MIT 许可证授权。请见 LICENSE.md。
您可以在 @willing 上关注我,通过 GitHub 上的邮箱联系我,或在我 jwilling.com 的博客上阅读我的文章。