UKAnimation
CoreAnimation 链式调用的封装
Pod
pod 'UKAnimation'
示例
UKAnimation(animView).shakeR().run()
或者您可以组合多个动画
UKAnimation(animView)
.move(to: [100,100]).stay()
.fade(from: 1, to: 0).modify{$0?.autoreverses = true}.stay()
.move(to: [300,400]).after(begin: 1, willGroup: true).stay()
.shakeR(radian:10, times:4, duration:0.5).after(begin: 1.5, willGroup: true)
.group().duration(2).modify{$0?.autoreverses = true}
.run()
用法
使用时,如果不满意当前的 CAAnimation,可以使用 modify(aniamtion handler: (A?) -> Swift.Void) 去修改最后一个添加的动画
UKAnimation./* animation */.modify{$0?.autoreverses = true}.run()
UKAnimation 也提供了 forEach 去遍历每一个 animation
handler(begin: Item.Handler? = default, end: Item.Handler? = default) 可以对最后一个 animation 设置回调
除了自带的几个小动画,您也可以通过 extension 添加动画
extension UKAnimation {
// code your animation
}
或者 add(animation: CAAnimation)
UKAnimation(animView).add { return /* your animation */}.run()
注意
所有的修改、合并、监听操作都是针对最后一个添加的 animation。当您使用 after(begin offset: CFTimeInterval, willGroup: Bool = default) 时,您需要确定之后是否将这个 animation 加入一个 CAAnimationGroup,否则动画会出现混乱
UKNoAnimation
你可以使用这个类来制作 CAAnimation 或者多个 CAAnimation
let animations: [CAAnimation] = UKNoAnimation().fade(from: 1, to: 0).allAnimation()
let animation: CAAnimation? = UKNoAnimation().fade(from: 1, to: 0).animation(by:"name")