DKAnimationKit 是一个使用 Swift 在 iOS 上简化动画的 DSL。这是 jhurray 的 JHChainableAnimations 的 Swift 版本。
![]() | ![]() |
![]() | ![]() |
如果您用 Objective-C 编写应用程序,应使用 JHChainableAnimations。
view.makeScale()(2.0).spring().animate()(1.0)
使用 DKAnimationKit,您不需要编写 额外的括号。
view.animation.makeScale(2.0).spring.animate(1.0)
pod "DKAnimationKit", "~> 0.1.1"
如果您熟悉 JHChainableAnimations,在这里阅读用法并不必要。
这两个框架之间的唯一区别在于,在使用 DKAnimationKit
时,您应该首先对 UIView
实例调用 animation
。
view.animation.moveX(10).animate(1.0)
链式属性或函数如 moveX(x)
必须放在 animate(duration)
函数之间。
view.animation.moveX(100.0).animate(1.0)
如果您想同时进行多个动画。
view.animation.moveX(100.0).moveY(100.0).animte(1.0)
这将同时将视图向右移动100点,向下移动100点。顺序并不重要。
要链式动画,请使用 thenAfter(duration)
函数分离链式过程。
view.animation.moveX(100.0).thenAfter(1.0).makeScale(2.0).animate(2.0)
这将让视图移动一秒,然后移动后放大两秒。
要添加动画效果,请在要应用的链式属性之后调用效果方法。
以下是使用弹簧效果移动视图的示例。
view.animation.moveX(10).spring.animate(1.0)
如果添加了两个动画效果,第一个将被清除。
view.animation.moveX(10).spring.bounce.animate(1.0)
// The same as view.animation.moveX(10).bounce.animate(1.0)
要锚定视图,请在动画链中的某个点调用锚定方法。如果添加了两个锚定属性,第一个将像效果一样被清除。
view.animation.rotate(180).anchorTopLeft.thenAfter(1.0).rotate(90).anchorCenter.animanimation
要延迟动画,请调用链式函数 wait(time)
或 delay(time)
。
view.animation.moveXY(100, 40).wait(0.5).animate(1.0)
view.animation.moveXY(100, 40).delay(0.5).animate(1.0)
delay
这将在0.5秒的延迟后移动视图。
如果动画完成后要运行代码,应该设置animationCompletion
属性或调用animateWithCompletion(t, completion)
函数。
view.animation.makeX(0).animateWithCompletion(1.0, {
println("Animation Done")
})
这和以下相同
view.animation.animationCompletion = {
println("Animation Done")
}
view.animation.makeX(0).aniamte(1.0)
同时也和以下相同
view.animation.makeX(0).aniamte(1.0).animationCompletion = {
println("Animation Done")
}
你也可以沿着UIBezierPath动画化一个视图。首先调用bezierPathForAnimation
方法,然后��加点到它上面或者添加曲线,并在可链式属性中使用。
let path = view.animation.bezierPathForAnimation()
path.addLintToPoint(CGPoint(x: 30, y: 40))
view.animation.moveOnPath(path).animate(1.0)
路径移动动画效果不起作用。
DKAnimationKit可以在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。