CoreAnimation的链式调用的封装
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 否则动画会出现紊乱
你可以通过这个类来制作 CAAnimation 或者一堆 CAAnimation
let animations: [CAAnimation] = UKNoAnimation().fade(from: 1, to: 0).allAnimation()
let animation: CAAnimation? = UKNoAnimation().fade(from: 1, to: 0).animation(by:"name")