CAAnimationGroup组合动画框架

复杂动画效果的痛点,就是多个动画要一起执行还得保持节奏一致。CAAnimationGroup的组合动画能力,挺适合搞定这种场景的。你可以把多个CAAnimation实例,比如旋转、路径移动,统一放到一个组里,一起加到图层上,执行起来就丝滑了。

CAAnimationGroup的用法其实也蛮直接:先写好各个子动画,比如用CABasicAnimation做旋转,用CAKeyframeAnimation搞路径;塞进animationGroup.animations里,设定个durationlayer.add(animationGroup, forKey:)一下就搞定。

动画执行的时间点可以用beginTime控制,效果延续也能通过fillMode配合removedOnCompletion来玩出花。还有个细节,completionHandler别忘了,加点逻辑在动画结束后一下,比如页面跳转、状态更新啥的。

举个例子,让图片转一圈再按路径飘过去:

let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.fromValue = 0
rotationAnimation.toValue = Double.pi * 2

let path = UIBezierPath() // 添加路径点... let pathAnimation = CAKeyframeAnimation(keyPath: "position") pathAnimation.path = path.cgPath

let animationGroup = CAAnimationGroup() animationGroup.animations = [rotationAnimation, pathAnimation] animationGroup.duration = 2.0

imageView.layer.add(animationGroup, forKey: "myAnimation")

用起来感觉还蛮灵活的,是跟CAKeyframeAnimation搭配的时候,可以做一些比较酷的交互,比如按钮点击的震动反馈、图片拖动的惯性动画等等。

小建议哦:duration别设太长,节奏太慢容易让用户觉得卡;还有就是不再需要的动画记得移除,免得内存泄露。,CAAnimationGroup用好了,动画体验会提升一大截。

想深入了解的朋友可以看看这些文章:

zip 文件大小:112.09KB